2009-03-02 21 views
10

Denetimlerim için bir XAML stili üzerinde çalışıyorum. Aşağıdaki kod, yığın paketinin rengini ayarlamak içindir. İyi çalışıyor ama yapmak istediğim başka bir şey var. Tetik etkinleştirilirse, yığın bölmesinin içindeki tüm alt öğeler için yazı tipi rengini ayarlamak istiyorum.WPF/XAML Stil seti Çocuk öğeleri için özellik?

Şu anda yığın çantasının içinde sadece metin blokları var ve biliyorum ki kolayca bir metin için ayrı bir stil oluşturabilirim. Ancak bu stil tetiklenirse, yalnızca TEK'i etkiler ve TÜM metin engellerini etkilemez. Ancak panel için bir fare hareketi tetiklediğimde, stackpanel içindeki tüm öğeleri değiştirmek istiyorum.

Bu, XAML'de bile mümkün mü veya normal bir olayı kodlamalı mıyım?

<Style x:Key="XStack" TargetType="StackPanel"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Color="White" Offset="0"/> 
       <GradientStop Color="SkyBlue" Offset="6"/>      
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <!-- Trigger--> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True" > 
      <Setter Property="Background" Value="SkyBlue"/> 
     </Trigger> 
    </Style.Triggers> 
</Style>  
+0

Teşekkürler! Bir rüya gibi çalışır! – TalkingCode

cevap

14

tetikleyicinize yere ekleyin: Like Olle söyledi

<Setter Property="TextElement.Foreground" Value="Blue"></Setter>

3

, özel bir değere bağlı özelliğini TextElement.Foreground ayarlayabilirsiniz. Görsel ağaçtaki bir çocuk denetimi/UI düğümü için, özellik ayarlanmadıysa, WPF bir değer bulana ve kullanana kadar UI hiyerarşisinde yukarı doğru ilerler. Bu, tüm alt denetimlerin üst düzeyde tanımlanan bir özellik değerini paylaşabileceği anlamına gelir.

Bu, tüm TextBlocks için çalışmalıdır ... ancak StackPanel'iniz bir TextBox içeriyorsa, metin rengi bundan etkilenmez. Foreground özelliğini Control base sınıfından kullanır ... Bu yüzden tüm olası çocuk eleman tipleri ile test ettiğinizden emin olun.