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.

Другие вопросы по тегам