Как изменить свойство другого элемента управления из события выбора элемента списка? - PullRequest
1 голос
/ 05 декабря 2011

У меня есть список и граница, обтекающая текстовое поле. Я хочу изменить стиль фона рамки в зависимости от того, выбран ли ЛЮБОЙ элемент в списке.

Причина в том, что я использую code-behind, чтобы убедиться, что ни один элемент не выбран в определенных условиях, поэтому, когда элемент в списке выбран, я хочу отобразить его.

<Border x:Name="brdMyBorder" BorderBrush="Black" BorderBackground="Blue">
    <TextBox ... />
</Border>

<ListBox x:Name="lstMyListBox" ItemsSource="{Binding Items}" SelectionChanged="listbox_selectionchanged" />

Я понимаю, что всегда могу установить фон в событии SelectionChanged, но вместо этого я бы предпочел использовать триггеры xaml. Я не уверен, как это сделать. Похоже, единственными триггерами, разрешенными на границе, является EventTrigger.

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Использование стиля с DataTriggers

<Style x:Key="MyBorderStyle" TargetType="{x:Type Border}">
    <Setter Property="Background" Value="Blue" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=lstMyListBox, Path=SelectedIndex}" Value="-1">
            <Setter Property="Background" Value="Red" />
        </DataTrigger>
    </Style.Triggers>

</Style>

Обратите внимание, что вы должны установить цвет фона по умолчанию в стиле, потому что в противном случае Background, указанный в теге <Border>, всегда будет переопределять значение Triggered.

0 голосов
/ 05 декабря 2011

Как насчет использования <EventTrigger RoutedEvent="SelectionChanged">

...