2011-01-06 19 views
5

Ben bir geçiş düğmesi için aşağıdaki xaml vardır:Neden Bu düğme üzerinde IsChecked değişmiyor?

<ToggleButton Margin="0,3" Grid.Row="3" Grid.ColumnSpan="2" Command="{Binding DataContext.SelectAllCommand, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"> 
    <ToggleButton.Style> 
    <Style TargetType="{x:Type ToggleButton}"> 
     <Setter Property="Content" Value="Select All"/> 
     <Style.Triggers> 
      <Trigger Property="IsChecked" Value="True"> 
       <Setter Property="Content" Value="Select None"/> 
       <Setter Property="Command" Value="{Binding DataContext.SelectNoneCommand, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/> 
      </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 

Ama butonuna tıkladığınızda IsChecked mülkiyet güncellenir asla.

Ben snoop kullanmak ve daha sonra True tetik tekme isChecked zorlar.

+1

Komutunuz ne yapıyor? Eğer Komutlarınızı kaldırırsam (ve sadece İçerik özelliklerini ayarlıyorum, iyi çalışıyor. –

cevap

5

ToggleButton'unuzu denedim ve iyi çalışıyor. Bununla gördüğüm tek sorun, Komuta'yı açıkça ayarlamanızdır. Bunun yerine Setter (Content ile yaptığınız gibi) Trigger'u kırmamanız gerekir. Hâlâ tıkla yapamıyorsanız IsHitTestVisible veya benzeri başka Görsel Ağacı kadar False olarak ayarlanırsa

<ToggleButton Name="toggleButton" Margin="0,3" Grid.Row="3" Grid.ColumnSpan="2"> 
    <ToggleButton.Style> 
     <Style TargetType="{x:Type ToggleButton}"> 
      <Setter Property="Content" Value="Select All"/> 
      <Setter Property="Command" 
        Value="{Binding DataContext.SelectAllCommand, 
            Mode=OneWay, 
            RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/> 
      <Style.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter Property="Content" Value="Select None"/> 
        <Setter Property="Command" Value="{Binding DataContext.SelectNoneCommand, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 

diye kontrol ediyorum.

sen gidenin ne görmek için benim test uygulamasına aktararak versiyonunu karşılaştırmak isterseniz

, ben burayı yüklendi: http://www.mediafire.com/?ik24ftsfw2wwfwb

+0

argh, cant erişimi - şirket güvenlik duvarı engellendi! Yardımlarınız için teşekkürler – cjroebuck

1

sadece bir tahmin, ama Bağlama Mode=OneWay kaldırın ve tekrar deneyin.

+0

teşekkürler ama hayır şansı .. Bu çalışma için IsChecked özelliğine bir şey bağlamaya ihtiyacım var mı? – cjroebuck

2

, benim komutu parametrelerini ayarlama benim ViewModel üzerinde yeni özellik bağlanma ve içine Command hareket ettirerek Sabit stili:

   <ToggleButton Margin="0,3" Grid.Row="3" Grid.ColumnSpan="2" IsThreeState="False" 
          IsChecked="{Binding DataContext.IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"> 
        <ToggleButton.Style> 
         <Style TargetType="{x:Type ToggleButton}"> 
          <Setter Property="Content" Value="Select All"/> 
          <Setter Property="Command" Value="{Binding DataContext.SelectAllCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/>         
          <Style.Triggers> 
           <Trigger Property="IsChecked" Value="True"> 
            <Setter Property="Content" Value="Select None"/>         
           </Trigger> 
          </Style.Triggers> 
         </Style> 
        </ToggleButton.Style> 
       </ToggleButton> 

sadece bazen WPF sevmez misin!

İlgili konular