是否可以使用WPF将元素的visibility属性绑定到XML?

时间:2012-06-07 20:56:21

标签: c# wpf binding

我有一个包含大量信息的XML,但有一些信息不应该显示,除非它存在于xml中。我知道我可以手动完成这项工作,但这并不好。

想象一下像这样的xml:

<root>
    <MandatoryContent />
    <OptionalContent />
</root>

我想将按钮的visibility属性绑定到OptionalContent元素的存在。有可能吗?

2 个答案:

答案 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创建整个对象树。