2010-10-31 79 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 2010-10-31 18:33:38

+0

檢查類myelement的InnerXml屬性是否通知其更改(接口INotifyPropertyChanged並在set-method中引發事件)。 – vorrtex 2010-11-01 14:52:41