Выбранный элемент WPF combobox

У меня есть поле со списком с несколькими элементами, отображаемыми как изображение и текст (помещенные рядом для каждого элемента). Теперь, когда я выбираю элемент из списка combobox, я хочу отобразить что-то еще (вместо того же изображения и текста), возможно, другой текст или другое изображение в области selecteditem Combobox.

Есть ли способ добиться этого?


person deepak    schedule 24.07.2009    source источник
comment
Я хочу изменить внешний вид, когда поле со списком свернуто, а выбранный элемент отображается в поле со списком.   -  person deepak    schedule 24.07.2009


Ответы (2)


Самый простой способ - добавить триггер IsSelected в DataTemplate (Itemstemplate) Combobox, я думаю, у вас есть две группы визуальных элементов, одна для обычного отображения данных, а другая для выбранных визуальных элементов, когда свойство IsSelected установлено в ComboboxItem, которое вам нужно Сделать обычные визуальные эффекты скрытыми, а другие - показанными. Настоящая уловка здесь состоит в том, чтобы немедленно найти пользователя ComboBoxItem, выбранного с помощью FindAncestor.

<DataTemplate x:Key="yourDataTemplate">
 <Grid x:Name="regularVisuals" > ... </Grid>
 <Grid x:Name="selectedVisuals" Visibility="Collapsed"> ... </Grid>
<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ComboBoxItem}},Path=IsSelected}" Value="True">
        <Setter TargetName="regularVisuals" Property="Visibility" Value="Visible"/>
        <Setter TargetName="selectedVisuals" Property="Visibility" Value="Collapsed"/>
    </DataTrigger>
</DataTemplate.Triggers>

person Jobi Joy    schedule 24.07.2009
comment
Должно ли TargetName обоих Setter действительно читать selectedVisuals? Разве нельзя быть обычными визуалами? - person Mizipzor; 15.10.2009

Есть несколько возможных способов, один из них - использование DataTemplates и селекторов шаблонов данных .

person bohdan_trotsenko    schedule 24.07.2009