2010-10-31 110 views
0

在C#Wpf应用程序中,我有一个XML Binded数据源。WPF绑定Formatexception

我想更新一些这样的XML:

loop.Innerxml = "false"

这个值绑定(作为布尔值)来控制。然而,当这样做时,一个formatexception出现说,一个字符串不是一个有效的布尔(逻辑)。然而,如果假输入不作为字符串,我不能更新innerxml ...

任何意见?

回答

1

当绑定发生时,您可以使用Converter将字符串转换为布尔值。

有关转换器的更多信息,请参见http://www.scip.be/index.php?Page=ArticlesNET22&Lang=EN

代码示例:

[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) 
    { 
    throw new NotSupportedException(); 
    } 
} 
+0

感谢你好!虽然看起来,当调用Loop.innerxml =“false”时,一个formatexception上升说value ==“”并且因此不是一个有效的布尔值... – internetmw 2010-10-31 14:45:50

+0

Innerxml是一个有效的DependencyProperty,或者它的setter引发了PropertyChanged事件INotifyPropertyChanged的)?如果不是,更改该值将不会通知绑定系统更新该值。 – robertos 2010-10-31 18:18:01

+0

我认为它只是引发了属性更改事件...我怎样才能改变这一点? – internetmw 2010-10-31 18:49:28