我有一个文本框,用户将服务器名称放入其中,并在他键入时将其验证为 FQDN。我还有一种在验证失败时应用的样式,它使文本框的背景变为粉红色。但是,我不希望在高对比度模式开启时发生这种情况,而且我似乎真的找不到太多关于如何实现这一点的文献。
这是文本框/样式:
<TextBox ...>
<TextBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ServerName.HasErrorsToShow}" Value="true">
<Setter Property="TextBox.Background" Value="Pink" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
我怎样才能做到这一点?谢谢!
编辑1:
我尝试使用 MultiTrigger。这似乎很有希望,但我不能完全正确。这段代码有效(用于测试我是否可以根据高对比度做出决定):
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="True">
<Setter Property="TextBox.Background" Value="Pink" />
</DataTrigger>
</Style.Triggers>
但是当我尝试添加 MultiTrigger 时,我得到了“设置属性 'System.Windows.FrameworkElement.Style' 引发异常”异常。内部异常是“'Property' 必须具有非空值”。这是代码:
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Binding="{Binding ServerName.HasErrorsToShow}" Value="True" />
<Condition Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="TextBox.Background" Value="Pink" />
</MultiTrigger>
</Style.Triggers>