2010-10-31 2 views
1

Я использую 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}}"

ответ

1

Я не уверен, но если вы используете «XPath = MyElement», строка должна быть

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

Я не знаю, сама привязка хорошо, это похоже на то, что ручное редактирование xml не переносится на Ivalueconverter ... – internetmw

+0

Проверьте, знает ли свойство InnerXml класса myelement его изменения (интерфейс INotifyPropertyChanged и повышение события в методе set). – vorrtex

Смежные вопросы