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
相关产品推荐
相关产品推荐

