Я использую Ivalueconverter, чтобы преобразовать строку в логическое значение, используя источник данных xml. Это работает нормально, пока я вручную не изменю xml примерно так:
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}}"