我有一個用戶放入服務器名稱的文本框,並且在鍵入時將其驗證爲FQDN。我也有一個風格,當驗證失敗使得文本框的背景變成粉紅色時,它會被應用。但是,我不希望在高對比度模式下出現這種情況時,而且我無法找到關於如何完成此操作的大量文獻。wpf文本框驗證反饋的可訪問性
這裏的文本框/風格:
<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>
您還可以根據「HighContrast」設置更改整個樣式。有關示例,請參見[本主題](http://social.msdn.microsoft.com/Forums/en/wpf/thread/ba9a379b-4f02-408c-954b-6057e6d0a1b5)。 –
感謝您的幫助。我嘗試了你的建議,但我遇到了一個例外。我已將結果放在編輯1中。 – Jay
TextBox.Background的原始值是多少?值可能是'null'嗎? –