在没有DataTrigger值满足时设置属性WPF

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)