我环顾四周,但无法具体找到我的问题。我知道 WPF 中的默认“错误”处理会在控件周围放置一个“装饰器”,以防基于 IDataErrorInfo 或 Validataion 规则导致给定控件失败的任何错误。这一切都很好,但是,使用选项卡式页面界面,如果任何控件被标记为无效,它们会被适当地装饰成红色边框。但是,一旦您从标签页 1 转到 2 并返回到 1,所有装饰器都消失了(坏的)。这已经被问过,并且解决方案被接受,但正在寻找更好的选择。
所以,我去了我的“主题”声明,对于文本框控件,我只是说将控件的整个背景颜色设置为红色,而不仅仅是边框。没有任何花哨的强制触发属性更改通知,如果我在页面之间交换,整个文本框的红色背景保持不变。
现在,转到组合框控件。对于那些自定义了自己的控件,甚至查看了默认的 MS 版本控件的人来说,它实际上是一堆控件、网格、列、按钮等的集合,以使组合框的魔力发挥作用。简单来说...
ControlTemplate Grid(两列,一列用于选择的文本显示,第二列用于下拉箭头) 跨越两列的边框路径(用于组合框的下拉图像的线条图/字形)
ControlTemplate TargetType 文本框(作为整个组合框集的一部分)边框特别是“PART_ContentHost”
组合框网格切换按钮下拉列表的 ControlTemplate 暴露显示列表其他触发器..
最后,由上述组件模板化的主要 ComboBox 声明。
无论如何,我不能为我的生活得到这个。在组合框声明的“切换按钮”区域中,我有一个触发器将背景更改为 OBVIOUS 关闭颜色,以证明在 ControlTemplate 声明中的正确位置测试触发器工作。
所以,知道这是组合框声明中的正确位置,如果数据有错误,我想用红色取代绿色背景颜色。我知道整体“Validation.HasError”被正确触发,如本机错误处理程序所示。无论模板中如何/在何处尝试将背景颜色更改为红色,它都不起作用。我什至尝试过 DataTriggers,使用转换器,尝试多个属性,但它似乎不合作。
有什么建议么?这真的很烦人。