j'ai une simple case à cocherWPF CheckBox Reliure - Valeur Modification en jeu de propriétés n'affecte pas l'interface utilisateur
<CheckBox IsChecked="{Binding ForceInheritance}"/>
Dans le code j'ai une classe avec "INotifyPropertyChanged" et la propriété
public bool ForceInheritance
{
get { return forceInheritance; }
set
{
if (forceInheritance != value)
{
value = SomeTest();
if (forceInheritance != value)
{
//something is done here.
}
OnPropertyChanged("ForceInheritance");
}
}
}
Si SomeTest() renvoie! value pour que les données sous-jacentes n'aient pas besoin de changer CheckBox change toujours son état IsChecked.
Par exemple:
ForceInheritance est false.
CheckBox est cliqué.
SomeTest() renvoie la valeur false.
-> Les données sous-jacentes ne sont pas modifiées
-> Je m'attendrais à ce que la CheckBox reste non cochée
CheckBox est vérifié. Que puis-je faire pour ne pas modifier l'état IsChecked du CheckBox lorsque le setter ne modifie pas réellement la valeur?
Je pensais que "OnPropertyChanged (" ForceInheritance ");" ferait l'affaire mais ce n'est pas le cas.
Nous vous remercions de votre temps.
Bonjour! Je pensais que OnPropertyChanged() déclencherait le getter et non le setter à nouveau. Mais merci votre réponse cela m'a conduit à une solution. Validation utilisée comme suggéré. Lorsque setter ne changeait pas la valeur sous-jacente, j'ai créé un message d'erreur. Lors du renvoi d'un message d'erreur de validation, d'un message d'erreur supprimé et d'un appel OnPropertyChanged(). -> getter est appelé avec la valeur correcte -> CheckBox reste décoché. – user227882