C# 如何处理WPF数据绑定中缺少的属性?

C# 如何处理WPF数据绑定中缺少的属性?,c#,wpf,linq-to-xml,xaml-binding,C#,Wpf,Linq To Xml,Xaml Binding,我有一个WPF应用程序,它读取XML文件并创建一个要绑定的XDocument,通过DataContext等将其各种元素向下传递给其他UI元素。此应用程序读取的XML模式将元素上的一些属性标记为完全可选的 我用于绑定的方法在“”中概述。应用程序将加载一个XML文件或创建一个空XDocument,然后将其指定为UI主网格的DataContext XDocument newDoc=newxdocument(new-XElement(“mydoc”); gridMain.DataContext=newD

我有一个WPF应用程序,它读取XML文件并创建一个要绑定的
XDocument
,通过DataContext等将其各种元素向下传递给其他UI元素。此应用程序读取的XML模式将元素上的一些属性标记为完全可选的

我用于绑定的方法在“”中概述。应用程序将加载一个XML文件或创建一个空XDocument,然后将其指定为UI主网格的
DataContext

XDocument newDoc=newxdocument(new-XElement(“mydoc”);
gridMain.DataContext=newDoc.Root;
然后,带有文档的元素的实例作为
列表框的
项源传递


然后,列表框中项目的
数据模板
具有图标和一个
切换按钮
,其状态由每个
元素上的布尔
相关
属性的值定义。我编写了自己的自定义
IValueConverter
类来处理XML布尔字符串和
System.Windows.Visibility
bool
值之间的转换


相关的
现在,如果我加载一个文档,其中每个
元素都定义了其
相关的
属性,那么这将按预期工作。但是,模式定义了
相关的
可能存在,也可能不存在。因此,当我在缺少这些属性的文档中创建一个元素或加载时,列表项视图会自动完全中断。两个图标都出现了,切换按钮似乎什么也不做。断点显示从未为这些元素调用我的自定义
IValueConverter
s,这表明绑定由于
Attribute[relevant]
null
而以静默方式失败,
null
没有属性,更不用说
Value

我尝试在
绑定中使用
FallbackValue
,但没有效果,空条件运算符在绑定中不起作用-XAML解析器在运行时会出现异常


问题的根源似乎是,如果属性不存在,绑定将不起作用,并且似乎没有办法使其具有默认值,或者在属性不存在时创建属性。那么,有没有一种方法可以让绑定按照我期望的方式运行?如果没有,如果缺少属性,是否有方法将其添加到每个元素中?

如果没有
属性[相关]
,绑定到此属性的
可见性
IsChecked
属性应该设置为什么?默认值是
mydoc/item@relevant
由模式定义,应该是
false
。但是您没有绑定到模式,是吗?您是否尝试将绑定的
FallbackValue
和/或
TargetNullValue
分别设置为
Collapsed
False
?这让我可以设置缺少属性时视图的默认状态(即图标可见性),但是,如果缺少属性,单击ToggleButton不会导致创建该属性,因此单击它不会导致图标发生应有的更改。为什么在单击按钮时会创建该属性…?如果没有
属性[相关]
,绑定到此属性的
可见性
IsChecked
属性应该设置为什么?默认值是
mydoc/item@relevant
由模式定义,应该是
false
。但是您没有绑定到模式,是吗?您是否尝试将绑定的
FallbackValue
和/或
TargetNullValue
分别设置为
Collapsed
False
?这让我可以设置缺少属性时视图的默认状态(即图标可见性),但是,如果缺少属性,单击ToggleButton不会导致创建该属性,因此单击它不会导致图标发生应有的更改。为什么单击按钮时会创建该属性。。。?