我在这里找到了许多类似的线程,但似乎没有一个能解决我的具体问题。
我需要在某些条件下突出显示文本框的背景。我创建了一个突出显示属性,并尝试使用样式中的触发器来设置它,但它实际上并没有突出显示文本。
这是我的风格,简化了:
<Style x:Key="TextBoxStyle" BasedOn="{StaticResource CommonStyles}">
<Style.Triggers>
<Trigger Property="Elements:DataElement.Highlight" Value="True">
<Setter Property="Control.Background"
Value="{DynamicResource EntryBoxHighlightBackground}"/>
</Trigger>
</Style.Triggers>
</Style>
元素定义为:
xmlns:Elements="clr-namespace:MDTCommon.Controls.Forms.Elements">
然后我有应用样式的部分:
<!-- Applies above style to all TextBoxes -->
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxContentHolder}" >
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<!-- Overrides the default Error Style -->
</Style>
DataElement 类后面的代码如下:
public static readonly DependencyProperty HighlightProperty =
DependencyProperty.Register("Highlight", typeof(bool), typeof(DataElement));
public bool Highlight
{
get { return (bool)base.GetValue(HighlightProperty); }
set { base.SetValue(HighlightProperty, value); }
}
DataElement 最终派生自 UserControl,它包含对 TextBox 对象以及其他对象的引用。
在包含所有数据元素对象的自定义表单类中,我使用以下命令来设置颜色。
Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;
因此,第一个问题是设置 DataElement 的突出显示属性不会导致文本框背景绘制为黄色。
另一个问题是,我意识到我正在将此样式应用于所有文本框,并且我可能在其他区域中拥有实际上未包含在 DataElement 中的文本框,这可能会导致绑定问题。