2013-05-08 18 views
6

Ana sayfamda ComboBox ve Button var ve düğüme combobox dizini 1 olarak ayarlandığında, düğme görünür hale gelmek üzere bir stil uygulamak istiyorum (başlangıçta gizlendi)). endeks değiştirildiğinde düğmesi bile gizli kalır,WPF'de bir DataTrigger ayarı hatası

<Grid> 
    <StackPanel Orientation="Vertical" Margin="10"> 
     <ComboBox Name="comboBox"/> 

     <Button Name="myBtn" Content="Hello" Visibility="Hidden"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
          <Setter Property="Visibility" Value="Visible"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
     </Button> 
    </StackPanel> 
</Grid> 

Birisi zaten bu here hakkında soru sordu, ben hemen hemen aynı şeyi yapıyorum, ama çalışmıyor: Bu benim XAML kodudur 1. Comobox başlangıçta 2 maddeyle arkadaki kodda doldurulur. Herhangi bir yardım takdir edilir.

cevap

15

Sorun, yerel olarak (bağımlılıkla yaptığınız gibi) bağlı olan bağımlılık özellik değerlerinin daha yüksek önceliğe sahip olması ve ardından stil tetikleyicisinden ayarlanmış olmasıdır. Bu nedenle, tetikleyici vurulduğunda bile, önceden ayarladığınız değeri geçersiz kılmaz.

<Button Name="myBtn" Content="Hello"> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="Visibility" Value="Hidden"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
         <Setter Property="Visibility" Value="Visible"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
    </Button> 

Ve vurduğunuzda hemen şimdi tetik özellik değerini geçersiz kılar:

basit bir çözüm yerine bir stil Setter varsayılan değeri ayarlamaktır.

Bunu yaparken, DP değerlerini ayarlamak için öncelik sırasını gösteren this link'a bir göz atmalısınız.

İlgili konular