J'utilise un Ivalueconverter pour convertir une chaîne en un booléen en utilisant une source de données XML. Cela fonctionne bien jusqu'à ce que je change manuellement le xml comme ceci:WPF Ivalueconverter valeurs vides
myelement.InnerXml = "true"
Je reçois alors un FormatException disant que la chaîne n'est pas un booléen valide, je vérifie la valeur qui va à mon convertisseur et il est égal à ""
Voici mon convertisseur:
[ValueConversion(typeof(string), typeof(bool))]
public class StringToBoolConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return TypeDescriptor.GetConverter(typeof(bool)).ConvertFrom(value); }
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return value.ToString();
}
}
Je lie le convertisseur comme ceci: <local:StringToBoolConverter x:Key="stringbool"></local:StringToBoolConverter>
et l'appliquer dans la liaison: IsChecked="{Binding Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, XPath=myelement, Converter={StaticResource stringbool}}"
Je ne sais pas, la liaison elle-même est ok, c'est juste qu'il semble que l'édition manuelle du xml ne se transporte pas dans l'Ivalueconverter ... – internetmw
Vérifie si la propriété InnerXml de la classe myelement notifie ses changements (interface INotifyPropertyChanged et raise event dans set-method). – vorrtex