gpt4 book ai didi

.net - 参照父控件的类型设置DataTrigger的样式

转载 作者:行者123 更新时间:2023-12-04 07:11:46 28 4
gpt4 key购买 nike

在我的窗口上有几个GroupBox控件,每个控件都包含一个网格控件。对于那些网格,我想分配一个样式。但是,仅对于直接位于GroupBox中的那些网格,所有其他网格都不应受到影响。

我尝试了以下方法,因为GetType()是没有属性,所以它不起作用。

<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Parent.GetType()}" Value="{x:Type GroupBox}">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>

我找到了一种解决方法,但这并不是一个很漂亮的解决方案,因为我必须修改GroupBoxes:
<Style TargetType="GroupBox">
<Setter Property="Tag" Value="blub"/>
</Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Parent.Tag, RelativeSource={RelativeSource Mode=Self}}" Value="blub">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>

显然,我可以手动为每个Grid设置样式,但是我试图避免这种情况,因为它们很多。希望您能找到一种方法使第一个示例生效。

最佳答案

<DataTrigger Binding="{Binding Path=Parent.Tag, RelativeSource={RelativeSource Mode=Self}}" Value="blub">

这段代码不起作用,因为Mode的类型实际上是BindingMode,它是一个Enumeration,并且其成员都不是Self。因此,此分配方式= Self在您的代码中错误。要知道Mode的可能值 click this

正确的写法是
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GroupBox}}, Path=Tag}" Value="blub">

当然,要使其正常工作,您必须保留已经编写的GroupBox样式。

关于.net - 参照父控件的类型设置DataTrigger的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298529/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com