2009-06-30 3 views
0

Mon argument est le suivant. Pour le test j'ai besoin quand chèque utilisateur chk1 l'élément Chk2 a changé la propriété IsEnabled à Faux, mais je ne peux pas faire référence à l'élément Chk2.Appelez un autre élément à l'intérieur de WPF Tree dans le style

Il s'agit du style XAML.

<Style x:Key="styleCheckBox" TargetType="{x:Type CheckBox}"> 
      <Style.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 

      </Style.Triggers> 
</Style 

Appel à style ..

<StackPanel> 
     <CheckBox x:Name="chk1" Content="CheckBox1" Style="{StaticResource styleCheckBox}"/> 
     <CheckBox x:Name="chk2" Content="CheckBox2"/> 
    </StackPanel> 

Répondre

3

Vous ne pouvez pas définir TargetProperty dans le style de déclenchement. Cela signifie essentiellement que vous devez créer un contrôle personnalisé dérivé de StackPanel qui contient deux cases à cocher et ces cases à cocher sont exposées en tant que propriétés. Ensuite, vous serez en mesure de définir un style pour ce contrôle (pas le CheckBox) et définir les propriétés que vous voulez.

beaucoup plus facile (si nécessaire que pour les tests) serait:

<StackPanel> 
<StackPanel.Resources> 
    <local:InverseBoolConverter x:Key="InverseBoolConverter"/> 
</StackPanel.Resources> 
<CheckBox x:Name="chk1" Content="CheckBox1"/> 
<CheckBox x:Name="chk2" Content="CheckBox2" IsEnabled="{Binding ElementName=chk1, Path=IsChecked, Converter={StaticResource InverseBoolConverter}}"/> 
</StackPanel> 

Où InverseBoolConverter est défini comme suit:

[ValueConversion(typeof(bool), typeof(bool))] 
public class InverseBoolConverter: IValueConverter { 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 
     if(value is bool) 
      return !(bool)value; 
     else 
      return null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 
     if(value is bool) 
      return !(bool)value; 
     else 
      return null; 
    } 
} 
+0

Merci !!, très utile. – Rangel

Questions connexes