我有一个包含大量信息的XML,但有一些信息不应该显示,除非它存在于xml中。我知道我可以手动完成这项工作,但这并不好。
想象一下像这样的xml:
<root>
<MandatoryContent />
<OptionalContent />
</root>
我想将按钮的visibility属性绑定到OptionalContent元素的存在。有可能吗?
答案 0 :(得分:0)
您可以将元素直接绑定到它所代表的对象,然后使用转换器在非空时将可见性设置为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答案 1 :(得分:0)
您不能直接绑定到XML,但可以使用某些东西从XML创建对象。
LinqToXSD是一个很好的候选人。
它的工作原理如下:您创建Xml Schema,LinqToXSD根据您的模式创建类,然后您可以读取XML,它将根据您的XML创建整个对象树。