ListBox CurrentItem / SelectedItem
Я использую пользовательский ListBoxItem, который построен так
<Style x:Key="MyListBoxItem" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border>
<Border>
<ContentPresenter />
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Это базовая структура, которая изменена для нужного мне элемента управления редактированием, например
<Style x:Key="MyListBoxItemText" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ListBoxItem Style="{DynamicResource MyListBoxItem}">
<TextBox />
</ListBoxItem>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Используемый ListBoxItem для определенной записи используемого ItemsSource в ListBox выбирается StyleSelector.
Что мне нужно, так это возможность доступа к ListBoxItem. Я пробовал следующее
- установите для свойства IsSyncronizedWithCurrentItem объекта ListBox значение true
- попробуйте получить событие SelectionChanged в ListBox
- контролировать свойство IsSelected объекта ListBoxItem
- define (Multi) Триггер в базовом стиле для ListBoxItem
- установить EventSetter
Кто-нибудь может мне помочь?
Заранее большое спасибо
1 ответ
Хорошо, вот мои попытки:
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Selector.IsSelected}" Value="True">
<Setter Property="Background" Value="Salmon" />
</DataTrigger>
</ControlTemplate.Triggers>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ListBoxItem.IsSelected}" Value="True">
<Setter Property="Background" Value="Salmon" />
</DataTrigger>
</ControlTemplate.Triggers>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Background" Value="Salmon" />
</DataTrigger>
</ControlTemplate.Triggers>
В стиле ListBox свойство IsSyncronizedWithCurrentItem установлено в значение true.