Стиль триггера из родительского контроля

Можно ли использовать триггер стиля из другого элемента управления?

я имею 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>
Другие вопросы по тегам