Bunun yapılması için birkaç yol var. MSDN 'da Precedence List'a bakarsanız, Forground'un 1-8. Yollarla ayarlandığını, varsayılan bir stilden Foreground
geçersiz kılacağını görebilirsiniz. Yerel değeri sadece TextBox
'da ayarlamak en kolay yoldur.
<TextBox Foreground="Red" />
Yapabileceğiniz başka bir şey başka sürümler geçersiz kılmak için stilleri 'BasedOn'
özelliğini kullanmaktır. Bu varsayılan stil bir anahtar değerini vererek gerektirir, ama bu daha sonra da bu örnekte olduğu gibi, varsayılan uygulamak için kullanılabilir:
<Style TargetType="{x:Type TextBox}"
x:Key="myTextBoxStyle">
<Setter Property="Foreground"
Value="Red" />
<Setter Property="FontWeight"
Value="Bold" />
</Style>
<!-- Style applies to all TextBoxes -->
<Style TargetType="{x:Type TextBox}"
BasedOn="{StaticResource myTextBoxStyle}" />
<TextBox Text="Hello">
<TextBox.Style>
<Style BasedOn="{StaticResource myTextBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Foreground"
Value="Blue" />
</Style>
</TextBox.Style>
</TextBox>
Düzenleme: halinde
varsayılan stil bir değer uyguluyor ve onu temel değere geri döndürmek istiyorsanız, bu davranışı elde etmek için el altında düşünebildiğim birkaç yol var. Bilemediğim, genel bir şekilde varsayılan tema değerine geri dönemezsiniz.
Başka şeyler de yapabiliriz. Bazı özelliklerin uygulanmaması için stile ihtiyacımız varsa, stili {x:Null}
olarak ayarlayabiliriz, böylece varsayılan stili uygulamadan kaldırırız.
<TextBox Text="Hello" Style="{x:Null}" />
<TextBox Text="Hello">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontWeight"
Value="Bold" />
</Style>
</TextBox.Style>
</TextBox>
Biz varsayılan stili değiştirebilir Ön plan sadece ayarlanacak şekilde: Ya da elemanını sonra taban stilinden devralan etmediği ve söz kendi tarzını ihtiyacımız sadece ayarlayıcıları yeniden uygulayın verebilir Etiket belirli bir değer gibi belirli durumlarda.
<Style TargetType="{x:Type TextBox}"
x:Key="myTextBoxStyle">
<Setter Property="FontWeight"
Value="Bold" />
<Style.Triggers>
<Trigger Property="Tag"
Value="ApplyForeground">
<Setter Property="Foreground"
Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
<TextBox Text="Hello" />
<TextBox Text="Hello" Tag="ApplyForeground" />
Örneğinizde, "Mavi" belirtmek zorunda kalmak istemiyorum. gibi bir şey yapmak istiyorum. Ben varsayılan olarak açıkça = Value = "Black" demeyi istiyorum. –
xanadont
Ah, bu gerçekten biraz farklı. Bu davayı ele almak için cevabımı düzenlerim. – rmoore
Sorunum, açıkladığımdan biraz farklıydı. ListView'de TextBox'lara uygulanacak bir stil meselesiydi. Ama bu cevabı açıklamak için böyle harika bir iş yaptığınızdan beri size biraz SO suyu vereceğim. Teşekkürler! – xanadont