#silverlight #silverlight-4.0
#silverlight #silverlight-4.0
Вопрос:
Это мой DataTemplate:
<DataTemplate x:Key="DataTemplateThemes">
<Grid Width="160" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5,0">
<Grid.RowDefinitions>
<RowDefinition Height="28.3336664835612"/>
<RowDefinition Height="161"/>
<RowDefinition Height="Auto" />
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="tbThemeName" HorizontalAlignment="Left" Margin="2" Grid.Row="2" TextWrapping="Wrap"
Text="{Binding ThemeName}" FontSize="16" FontFamily="Segoe UI" d:LayoutOverrides="Height"/>
<Image Margin="0" Stretch="Fill" Grid.Row="1" Source="{Binding Path=ThemePicName, Converter={StaticResource imageConverter}}"/>
<TextBlock x:Name="tbDescription" HorizontalAlignment="Left" Margin="2" Grid.Row="3"
TextWrapping="Wrap" Text="{Binding ThemeDescription}" FontSize="14.667" FontFamily="Segoe UI"
d:LayoutOverrides="Height"/>
<RadioButton Content="Apply" Margin="-10,0,0,0"
d:LayoutOverrides="Width, Height" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
Проверяемое свойство RadioButton зависит от Theme
свойства, которое доступно в моей ViewModel. Изначально я думал, что создам конвертер, который передаст ThemeId текущей строки (datatemplate current DataContext) и свойство ThemeId темы ViewModel (которая является выбранной темой), и если они оба совпадают, я бы проверил свойство radiobutton. Но ConverterParameter не может принимать выражение привязки, поскольку это не свойство DependencyProperty. Итак, как мне решить эту проблему?
Заранее спасибо 🙂
Комментарии:
1. поскольку вы можете получить идентификатор темы и выбранный идентификатор темы. почему бы не создать логическое свойство в вашей viewmodel и не проверить, совпадают ли они оттуда?
2. Если свойства ThemeId и Theme находятся в одной и той же модели представления — передайте всю модель представления. Если это что-то более сложное — я бы использовал привязку к свойству IsSelected из ListBox, его проще привязать к свойству SelectedItem.
3. @Xin: — Не знаю, почему это меня не поразило.
Ответ №1:
Вы могли бы реализовать решение с несколькими привязками. Я ранее реализовал решение, описанное здесь:
http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/
Тогда у вас мог бы быть конвертер, который принимает два требуемых параметра.