来自父控件的样式触发器
Style trigger from parent control
是否可以使用来自另一个控件的样式触发器?
我有 Border
控件,它位于网格每一行的指示器部分(指示器是最左边带有小箭头的部分)。我想根据该行是否为 selected 来设置背景。所以我创建了一个样式:
<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
将 return 根据行的正确颜色(效果很好)。
问题是当我 select 一个不同的单元格时背景没有更新(这确实有意义,因为没有触发何时更新它)。
是否可以设置父控件的触发器?
某事独行
<Trigger Property="ParentControl.SelectionHasChanged" Value="True"></Trigger>
您应该可以在 Binding
中使用 ElementName
来实现这一点。例如,以下绑定到 Grid
的 IsEnabled
属性 并将 Border
的 Background
属性 设置为红色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>
是否可以使用来自另一个控件的样式触发器?
我有 Border
控件,它位于网格每一行的指示器部分(指示器是最左边带有小箭头的部分)。我想根据该行是否为 selected 来设置背景。所以我创建了一个样式:
<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
将 return 根据行的正确颜色(效果很好)。
问题是当我 select 一个不同的单元格时背景没有更新(这确实有意义,因为没有触发何时更新它)。
是否可以设置父控件的触发器?
某事独行
<Trigger Property="ParentControl.SelectionHasChanged" Value="True"></Trigger>
您应该可以在 Binding
中使用 ElementName
来实现这一点。例如,以下绑定到 Grid
的 IsEnabled
属性 并将 Border
的 Background
属性 设置为红色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>