我有一个包含大量信息的 XML,但有些信息不应该显示,除非它存在于 xml 中。我知道我可以手动执行此操作,但这并不好。
想象一下xml是这样的:
<root>
<MandatoryContent />
<OptionalContent />
</root>
我想将按钮的可见性属性绑定到 OptionalContent 元素的存在。是否可以?
您可以将元素直接绑定到它所代表的对象,然后使用转换器将可见性设置为Visibility.Visible
不为空时。
<Label Visibility="{Binding MyObject, Converter={StaticResource NullToVisibilityConverter}} />
请务必在资源中声明您的转换器
<win:CustomWindow.Resources>
<Converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</win:CustomWindow.Resources>
如果您想要一个很好的转换器示例,这里是来自 MSDN http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx的 IValueConverter
您不能直接绑定到 XML,但可以使用某些东西从 XML 创建对象。
LinqToXSD 是一个很好的候选者。
它的工作原理如下:您创建 Xml Schema,LinqToXSD 基于您的模式创建类,然后您可以读取 XML,它将根据您的 XML 创建整个对象树。