Необходимо соблюдение MVVM
Проблема такова, я через ItemsSource передаю в список коллекцию объектов. Шаблон данного списка выглядит так:
<ListBox ItemsSource="{Binding ItemList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Title}" FontSize="15"/>
<TextBlock Text="{Binding Description}" FontSize="13"/>
<TextBlock Text="{Binding Price}" FontSize="13"/>
<CheckBox/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
И как видите там в конце шаблона затисался CheckBox. Я хочу сделать так, чтобы он был видимым только тогда, когда данный элемент выбран, т.е. у других объектов он будет невидимым, пока их не выберут, но проблема в том, что мы передаем напрямую список объектов, а не привычный ListBoxItem, у которого можно было бы привязать видимость чекбокса к свойству IsSelected элемента и дальше использовать конвертер. Что в такой ситуации можно сделать?
Создадим стиль для ListBoxItem
:
<Style x:Key="MyListboxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border>
<Grid>
<TextBlock Text="{Binding Title}" FontSize="15"/>
<TextBlock Text="{Binding Description}" FontSize="13"/>
<TextBlock Text="{Binding Price}" FontSize="13"/>
<CheckBox x:Name="CB" Opacity="0" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="CB" Property="Opacity" Value="1" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Собственно, создавать его по хорошему нужно не с нуля, а на основе уже существующего (и использующегося у вас стиля), куда аккуратненько подпихнуть это.
Сам же код Listbox'a
будет выглядеть вот так:
<ListBox ItemsSource="{Binding ItemList}" ItemContainerStyle="{DynamicResource MyListboxItemStyle}"></ListBox>
В нем больше нет необходимости задавать ItemTemplate
, ибо все это уже задано в стиле.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В Unity3d при создании класса "public class MapCamera : Singleton" выдает ошибку: - The namespace '' already contains a definition for 'MapCamera'Что я делаю не так?
на одном из Продакшен серверов возникло исключение