2010-10-31 7 views
1

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}}"

Répondre

1

Je ne sais pas, mais si vous utilisez « XPath = myElement », la chaîne doit être

myCheckBox.DataContext="<myelement>true</myelement>"; 
+0

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

+0

Vérifie si la propriété InnerXml de la classe myelement notifie ses changements (interface INotifyPropertyChanged et raise event dans set-method). – vorrtex

Questions connexes