繁体   English   中英

C# WPF - 为在不同网格中定义的多个复选框创建通用样式触发器

[英]C# WPF - Create a generic style trigger for multiple checkboxes defined within separate grids

我有 40 多个复选框,每个复选框都位于视图的单独网格中。 这样做的目的是让我可以根据特定条件轻松地将网格的背景设置为黄色。 下面的代码片段按预期工作。

唯一的缺点是我目前必须复制此样式并将其放在 40 个复选框中的每一个中并绑定到元素名称。 因此,我的问题是如何使网格样式更通用,这样我就不必将样式放在每个复选框中并绑定到元素名称。 任何建议将不胜感激。

<Grid Margin="5 10 0 0">
       <CheckBox Name="cbValid" Content="VALID-CATEGORY" FontSize="12"
       IsChecked="{Binding Category.VALID_CATEGORY}"
       Style="{StaticResource CheckBoxStyle}"/>
       <Grid.Style>
            <Style TargetType="Grid">
                   <Style.Triggers>
                          <DataTrigger Binding="{Binding ElementName=cbValid, Path=Background}" Value="Yellow">
                               <Setter Property="Background" Value="Yellow" />
                          </DataTrigger>
                   </Style.Triggers>
            </Style>
       </Grid.Style>
</Grid>

如果为 CheckBox 创建自定义模板,则不需要Grid

或者,您可以使用隐式Grid样式将Background绑定到其第一个孩子的Background

<Style TargetType="Grid">
    <Setter Property="Background"
            Value="{Binding Children[0].Background, RelativeSource={RelativeSource Self}}" />
</Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM