gpt4 book ai didi

wpf - 有没有办法在触发器之间重用属性 setter

转载 作者:行者123 更新时间:2023-12-04 19:49:57 25 4
gpt4 key购买 nike

在 WPF 中是否有一些机制可以在不同的触发器中重用属性 setter ?例如我有以下内容。

                <Style TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="Content" Value="Not Connected" />
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding IsConnected}" Value="False">
<Setter Property="Content" Value="Not Connected" />
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding IsConnected}" Value="True">
<Setter Property="Content" Value="Connected" />
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>

Null 和 False 的 setter 是相同的,如果只有一个更改点就好了。

最佳答案

您始终可以像这样创建资源:

<Setter x:Key="setter1" Property="Content" Value="Not Connected" />

但是,您不能将资源键用作集合中的对象。

你可以在某处设置

<SomeObject Setter="{StaticResource setter1}"/>

但 Setter 几乎总是添加到集合中,您不能在 xaml 集合语法中添加资源键。

我能想到的唯一支持这一点的场景是用这两对相同的 Setters 创建一个 SetterBaseCollection 资源,

<SetterBaseCollection x:Key="settersKey">
<Setter Property="Label.Content" Value="Not Connected" />
<Setter Property="Label.Foreground" Value="Red" />
</SetterBaseCollection>

<Style TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}" Setters="{StaticResource settersKey}"/>

// ...

</Style.Triggers>
</Style>

但是 DataTrigger.Setters 集合属性是只读的,不能从 xaml 中设置。

所以,答案是否定的。

关于wpf - 有没有办法在触发器之间重用属性 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114578/

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