我在這裏找到了許多類似的線程,但似乎沒有解決我的特定問題。將WPF樣式觸發器綁定到自定義依賴屬性
我需要在某些條件下突出顯示文本框的背景。我已經創建了一個Highlight屬性,並嘗試在樣式中使用觸發器來設置它,但實際上並沒有突出顯示文本。
這是我的風格,簡化:
<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); }
}
最終從UserControl派生的DataElement,它包含對TextBox對象以及其他對象的引用。
在容納所有DataElement對象的CustomForm類中,我有以下設置顏色。
Resources["EntryBoxHighlightBackground"] = Brushes.Yellow;
所以,第一個問題是設置DataElement的Highlight屬性不會導致文本框背景以黃色繪製。
另一個問題是,我意識到我正在將此樣式應用於所有文本框,並且我可能在其他區域中沒有實際包含在DataElement中的文本框,這可能會導致綁定問題。
嘗試二傳手「背景」添加到您的風格 – 2012-08-01 16:08:24
我有一個二傳手。 – WPFNewbie 2012-08-01 20:41:56
我忽略了很多風格來保持簡單,並專注於我認爲問題可能出現的地方。 – WPFNewbie 2012-08-01 20:43:16