繁体   English   中英

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

[英]Setting Property when No DataTrigger Values are Satisfied WPF

我对WPF和C#非常陌生,因此可能会有更好的方法来完成我正在尝试的工作。 因此,我愿意接受其他方法。

据我所知,我正在尝试为我工作的维护部门编程一个数字VMB(可视化管理委员会)。 他们想要一个部分来显示我们的工厂没有发生意外的天数:“安全天数”。 我已成功为此TextBlock设置了绑定:

<TextBlock Text="{Binding DaysSafe}" FontSize="60"  FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" >

我有一系列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>

此功能可以正常运行,当天数减少时,颜色也会改变。 但是,当DaysSafe的值超过5时,我希望将前景色“默认”设置为绿色。现在,当我希望它为绿色时,任何大于5的值都是黑色。 我尝试在第一个TextBlock部分中添加frontant =“ green”属性,但这将覆盖DataTriggers,并且前景始终为绿色。

关于如何为前景创建默认值的任何帮助? 谢谢。

您可以添加一个设置器,将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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM