我正在嘗試使用並瞭解樣式的XAML層次結構...在簡單,簡單的文本框中...遍及各處看到如何設置「禁用「基於」IsEnabled「標誌的背景顏色。太好了,明白了。嘗試繼承主題/樣式並應用其他觸發器
現在,我想有另一個派生自TextBox的類... MyTextBox。對於這個類,我有一個屬性(不依賴於屬性,所以我使用DataTrigger)。所以,我想保留正在工作的所有正常的TextBox動作,但是現在獲得新的觸發器來正確地將背景色更新爲其他顏色。所以,這就是我所擁有的。只是爲了澄清,我所有的顏色靜態資源是固體刷...
<Style TargetType="TextBox" >
<Setter Property="FontFamily" Value="Courier New" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="{StaticResource MyForeground}" />
<Setter Property="Background" Value="{StaticResource MyBackground}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Name="Bd" BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="true">
<ScrollViewer Name="PART_ContentHost"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{StaticResource MyDisBackground}" />
<Setter TargetName="PART_ContentHost" Property="Background"
Value="MyDisBackground"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Now, my derived (or so I was hoping) style that just adds additional trigger -->
<Style TargetType="local:MyTextBox" BasedOn="{StaticResource {x:Type TextBox}}" >
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsRequired}" Value="True">
<Setter Property="Background" Value="{StaticResource RequiredBackground}" />
</DataTrigger>
</Style.Triggers>
</Style>
我缺少一些簡單的東西?
好吧,我複製了你的代碼,並提出了CodeNaked列出的第一個建議修改** Binding =「{Binding Path = IsRequired,RelativeSource = {RelativeSource Self}}」**這種改變似乎是行得通的(假設你的' MyTextBox類實現了INotifyPropertyChanged和你的IsRequired屬性,我會發布我的代碼來告訴你我做了什麼......但是我不想發佈一個相互競爭的答案,因爲我不是那個真正想出它的人。 – Scott
@Scott,感謝您的輸入,他們似乎正在按照我所希望的方式工作,並且看到在兩種情況下......一個是DependencyProperty,另一個是通過INotifyPropertyChanged(我已經擁有) – DRapp
@DRapp,很高興看到你的解決方案能夠正常工作!在這兩種解決方案中,我確實更喜歡依賴屬性解決方案,因爲您可以直接在XAML中設置值。我只注意到你在你的問題中特別提到你沒有使用DependencyProperty,因此認爲你更願意避免它。 – Scott