0

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

想象一下xml是这样的:

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

我想将按钮的可见性属性绑定到 OptionalContent 元素的存在。是否可以?

4

2 回答 2

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

于 2012-06-07T21:10:50.467 回答
0

您不能直接绑定到 XML,但可以使用某些东西从 XML 创建对象。

LinqToXSD 是一个很好的候选者。

它的工作原理如下:您创建 Xml Schema,LinqToXSD 基于您的模式创建类,然后您可以读取 XML,它将根据您的 XML 创建整个对象树。

于 2012-06-07T21:11:58.357 回答