2010-11-11 5 views
0

Je suit case à cocher:WPF Reliure commande

<dxe:CheckEdit Margin="2,0" IsChecked="{Binding SelectedContact.isMajor,Mode=TwoWay,Converter={StaticResource CheckBoxNullToFalse}}">More than 18</dxe:CheckEdit> 

C'est ce que je veux atteindre: lorsque l'utilisateur clique sur la case à cocher, je veux appeler une fonction, mais également assigner le champ isMajor.

La seule façon que je vois comment faire est de se lier à une commande qui effectuera les opérations

est-il un moyen plus simple?
Merci
John

+0

Qu'est-ce que isMajor Field, une autre case à cocher ou un champ dans votre base de données? –

Répondre

1

Faire isMajor une propriété plutôt que d'un champ, et appeler une méthode dans le poseur

private bool _isMajor; 
public bool IsMajor 
{ 
    get { return _isMajor; } 
    set 
    { 
     _isMajor = value; 
     OnPropertyChanged("IsMajor"); 
     DoSomething(); 
    } 
} 
1

Pour être honnête, en utilisant une commande est la première chose qui me vint. Je suppose que dxe:CheckEdit est une variante de CheckBox - vous pouvez trouver un ToggleButton utile, comme alternative, selon le comportement que vous recherchez.

Je ne suis pas sûr de ce que vous entendez par « simple » (moins de code, plus facile à comprendre, etc.), mais la liaison IsChecked à une isMajor propriété (comme par @Thomas Levesque) et la liaison à une commande (ou RelayDelegate, par exemple) pour appeler la fonction fournit un moyen propre de faire les deux choses que vous voulez sans introduire d'effets secondaires dans votre code, comme vous le feriez si vous appeliez la fonction d'un accesseur de propriété ou votre Converter, par exemple, ne soyez pas évident pour les autres développeurs. Ou à vous, quand vous revenez à maintenir cela dans un an à partir de maintenant. :)