作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写使用DataTrigger在ViewModel中设置属性的XAML文件。 ViewModel类定义为:
public class ShellModel : INotifyPropertyChanged
{
public Brush ForegroundBrush
{
get; set;
}
....................
}
<StatusBar Name="statusBar" Grid.Row="3">
<StatusBarItem>
<StatusBarItem.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding HasError}" Value="True">
<Setter Property="ForegroundBrush" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding HasError}" Value="False">
<Setter Property="ForegroundBrush" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
</StatusBarItem.Style>
<TextBlock Name="statusBarMessage" Foreground="{Binding ForegroundBrush}" Text="{Binding StatusMessage}"></TextBlock>
</StatusBarItem>
........................
<Setter Property="ForegroundBrush" Value="Black" />
<Setter Property="ShellModel.ForegroundBrush" Value="Black" />
Dependency property field missing ....
最佳答案
DataTriggers中的 setter 应仅更改UI元素的属性(并且它们仅与DependencyProperties一起使用)。
直接设置StatusBarItem的Foregound
属性,并设置样式的TargetType。那应该有帮助。
<Style TargetType="{x:Type StatusBarItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasError}" Value="True">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding HasError}" Value="False">
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
关于wpf - 如何在WPF中使用DataTrigger设置在ViewModel中定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804437/
我是一名优秀的程序员,十分优秀!