Я использую Ivalueconverter для преобразования строки в логическое значение с использованием источника данных xml. Это прекрасно работает, пока я вручную изменить XML следующим образом:WPF Ivalueconverter пустые значения
myelement.InnerXml = "true"
Я тогда получать FormatException говоря строку не является допустимым логическим значением, я проверяю значение, которое входит в мой конвертер и оно равно ""
Вот мой конвертер:
[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();
}
}
Я связываю преобразователь следующим образом: <local:StringToBoolConverter x:Key="stringbool"></local:StringToBoolConverter>
и применять его в связывании: IsChecked="{Binding Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, XPath=myelement, Converter={StaticResource stringbool}}"
Я не знаю, сама привязка хорошо, это похоже на то, что ручное редактирование xml не переносится на Ivalueconverter ... – internetmw
Проверьте, знает ли свойство InnerXml класса myelement его изменения (интерфейс INotifyPropertyChanged и повышение события в методе set). – vorrtex