Стиль триггера из родительского контроля
Можно ли использовать триггер стиля из другого элемента управления?
я имею Border
элемент управления, который находится в индикаторной части каждой строки сетки (индикатор - это часть слева с маленькой стрелкой). Я хочу установить фон в зависимости от выбранной строки. Итак, я создал стиль:
<controls:SelectionConverter x:Key="SelectionConverter" />
<Style x:Key="SelectionStyle" TargetType="Border">
<Setter Property="Background" Value="{Binding Converter={StaticResource SelectionConverter}}"/>
<Style.Triggers>
<!-- here I want to have a trigger which reacts on a property of the grid control -->
</Style.Triggers>
</Style>
Тогда пограничный контроль будет использовать стиль (на самом деле есть 3 пограничных контроля).
SelectionConverter
вернет правильный цвет в зависимости от строки (это работает нормально).
Проблема в том, что фон не обновляется, когда я выбираю другую ячейку (что имеет смысл, потому что нет триггера, когда ее обновлять).
Можно ли настроить триггер родительского элемента управления?
Что-то одна линия
<Trigger Property="ParentControl.SelectionHasChanged" Value="True"></Trigger>
1 ответ
Вы должны быть в состоянии использовать ElementName
в вашем Binding
для достижения этой цели. Например, следующее связывает с IsEnabled
свойство Grid
и устанавливает Background
собственность Border
красный, когда это true
:
<Grid x:Name"main_grid">
...
<controls:SelectionConverter x:Key="SelectionConverter" />
<Style x:Key="SelectionStyle" TargetType="Border">
<Setter Property="Background" Value="{Binding Converter={StaticResource SelectionConverter}}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsEnabled, ElementName=main_grid}" Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
...
</Grid>