You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WPF使用DataTrigger实现两台灌装机状态指示灯独立变色

核心问题说明

你当前两个Border均绑定了同一父级BorderBrush属性,所以二者颜色永远同步,无法分别对应两台灌装机的状态,直接调整XAML结构即可实现需求。


调整后代码示例

<StackPanel Orientation="Horizontal" >
    <!-- 1号灌装机对应指示灯 -->
    <Border
        BorderThickness="4"                                       
        CornerRadius="5,0,0,5"
        Width="40">
        <Border.Style>
            <Style TargetType="Border">
                <!-- 默认状态设为停机红色 -->
                <Setter Property="BorderBrush" Value="Red"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding LineStatus}" Value="True">
                        <Setter Property="BorderBrush" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
    <!-- 2号灌装机对应指示灯 -->
    <Border
        BorderThickness="4"                                       
        CornerRadius="0,5,5,0"                                            
        Width="40">
        <Border.Style>
            <Style TargetType="Border">
                <!-- 默认状态设为停机红色 -->
                <Setter Property="BorderBrush" Value="Red"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding LineStatus2}" Value="True">
                        <Setter Property="BorderBrush" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
</StackPanel>

调整说明

  • 取消了两个Border对全局BorderBrush的模板绑定,改为各自独立控制颜色
  • 每个Border内部单独配置触发器,分别绑定对应的灌装机状态属性:1号对应LineStatus、2号对应LineStatus2
  • 原有全局定义的两个DataTrigger可以直接删除,不需要再使用

内容的提问来源于stack exchange,提问作者Multispeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:18:00