2010-11-21 28 views
1

Düğme Devre Dışı (btnUp.IsEnabled = false) olduğunda rengi değiştirmek istediğim basit bir Polyline ile bir düğme oluşturuyorum. WPF Tetikleme ve Ciltleme sorunu

bu çalıştı:

<RepeatButton x:Name="btnUp" Foreground="Green"> 
    <RepeatButton.Style> 
    <Style TargetType="{x:Type RepeatButton}"> 
     <Setter Property="Content"> 
     <Setter.Value> 
      <Polyline x:Name="arrowUp" Points="0,2 3,0 6,2" Stroke="{Binding RelativeSource={RelativeSource AncestorType=RepeatButton}, Path=Foreground, Mode=TwoWay}" StrokeThickness="2"/> 
     </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Foreground" Value="#FFFFFFFF"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </RepeatButton.Style> 
</RepeatButton> 

Ama düğme devre dışı bırakıldığında Polyline hala aynı (Yeşil) rengi vardır. Button.foreground ve polyline.stroke arasındaki veri bağlantısı nedeniyle beyaz olmasını beklemiş olmama rağmen. Bunun için tetiği değiştirirseniz

Ancak (düğme daraltılmış) çalışır:

<Trigger Property="IsEnabled" Value="False"> 
    <Setter Property="Visibility" Value="Collapsed"/> 
</Trigger> 

cevap

1

başıma cevabını buldu. Foreground="Green"'u <Style>'un içinde ayrı bir ayarlayıcıya, <Setter Property="Foreground" Value="#FF383838"/>'a taşıdım, sonra çalıştı. Neden emin değilim.

İşte tam çözüm:

<RepeatButton x:Name="btnUp"> 
    <RepeatButton.Style> 
    <Style TargetType="{x:Type RepeatButton}"> 
     <Setter Property="Foreground" Value="Green"/> 
     <Setter Property="Content"> 
     <Setter.Value> 
      <Polyline x:Name="arrowUp" Points="0,2 3,0 6,2" Stroke="{Binding RelativeSource={RelativeSource AncestorType=RepeatButton}, Path=Foreground, Mode=TwoWay}" StrokeThickness="2"/> 
     </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Foreground" Value="#FFFFFFFF"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </RepeatButton.Style> 
</RepeatButton> 
+0

Açık özellik değerleri tarzı değerlerinden daha yüksek öncelikli olan tetik değerlerinden daha yüksek öncelikli - böylece düzeltme tam doğrudur. Daha fazla bilgi için, http://msdn.microsoft.com/en-us/library/ms743230.aspx adresindeki "Bağımlılık Özelliği Önceliği Listesi" bölümünü okuyun. –

İlgili konular