Cal*_* W. 5 c# wpf binding styles datatrigger
我对WPF和C#非常陌生,所以可能有更好的方法来完成我正在尝试的东西.因此,我对其他方法持开放态度.
就我所拥有的而言,我正在尝试为我工作的维护部门编写数字VMB(可视化管理板).他们想要一个部分显示我们的工厂没有发生意外的天数:"安全日".我成功地为此TextBlock设置了绑定集:
<TextBlock Text="{Binding DaysSafe}" FontSize="60" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" >
Run Code Online (Sandbox Code Playgroud)
我有一系列DataTriggers,根据文本的值将文本的前景颜色更改为某种颜色.基本上,我希望DaysSafe文本为:红色0时橙色为1等等(您可以在下面的代码中看到颜色):
<StackPanel VerticalAlignment="Center" >
<TextBlock Text="{Binding DaysSafe}" FontSize="60" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" >
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers >
<DataTrigger Binding="{Binding DaysSafe}" Value="0">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="1">
<Setter Property="Foreground" Value="OrangeRed" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="2">
<Setter Property="Foreground" Value="Orange" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="3">
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="4">
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="5">
<Setter Property="Foreground" Value="GreenYellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这个功能正常,颜色在天数较低时会发生变化.但是,当DaysSafe的值超过5时,我希望前景色为"默认"为绿色.现在,当我希望它为绿色时,任何大于5的值都是黑色.我尝试在第一个TextBlock部分添加foreground ="green"属性,但这会覆盖DataTriggers,前景始终为绿色.
有关如何为前景创建默认值的任何帮助?谢谢.
mm8*_*mm8 10
你可以添加一个setter,将TextBlock的默认前景设置为绿色:
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers >
<DataTrigger Binding="{Binding DaysSafe}" Value="0">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="1">
<Setter Property="Foreground" Value="OrangeRed" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="2">
<Setter Property="Foreground" Value="Orange" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="3">
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="4">
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding DaysSafe}" Value="5">
<Setter Property="Foreground" Value="GreenYellow" />
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)