作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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/
我是一名优秀的程序员,十分优秀!