【发布时间】:2018-11-21 08:42:00
【问题描述】:
我不知道出了什么问题,以及我应该如何解决错误。奇怪的是,数据触发器工作正常。
<Style TargetType="Border">
<Setter Property="Background" Value="{StaticResource HeaderBackgroundBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="{StaticResource ErrorState}">
<Setter Property="Background" Value="OrangeRed"/>
</DataTrigger>
<DataTrigger Binding="{Binding State}" Value="{StaticResource ProductionState}">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
ProductionState 和错误状态是 XAML 中引用的枚举值:
<machineControl:MachineControllerState x:Key="ErrorState">Error</machineControl:MachineControllerState>
<machineControl:MachineControllerState x:Key="ProductionState">Production</machineControl:MachineControllerState>
对视图模型的状态绑定引用是支持 IPropertyChanged 的“普通”属性(来自 mvvm 灯库)
public MachineControllerState State
{
get => state;
set { Set(() => State, ref state, value); }
}
visual studio 在错误列表中显示错误:
数据触发器在使用(密封)后,无法修改
更新:明确地说,解决方案编译良好,运行时一切正常。
【问题讨论】:
-
是VS2013吗?
-
抱歉。 vs2017最新更新
-
那么不应该是这样。尝试清理并重建整个解决方案。正如其他人所说,这对他们有用 - 清除错误。
-
措辞不是很有帮助,我觉得“承诺”比“密封”更有帮助。但是从根本上讲,xaml 不能与您编写的代码很好地交互。似乎它想修补触发器。我们看不到代码。暂时注释掉东西可能是一种很好的定位方式。
-
@KevinKouketsu {x:Static machineControl:MachineControllerState.Production} 是修复。谢谢!这样看起来更好看,没有错误:)。放弃它作为答案,我会接受它
标签: c# wpf visual-studio-2017