我有一個XML包含大量的信息,但有一些信息不應該顯示,除非它存在於xml中。我知道我可以手動做到這一點,但這並不好。是否可以使用WPF將元素的visibility屬性綁定到XML?
想象中的XML是這樣的:
<root>
<MandatoryContent />
<OptionalContent />
</root>
我想一個按鈕的可見性屬性綁定到OptionalContent元素的存在。可能嗎?
我有一個XML包含大量的信息,但有一些信息不應該顯示,除非它存在於xml中。我知道我可以手動做到這一點,但這並不好。是否可以使用WPF將元素的visibility屬性綁定到XML?
想象中的XML是這樣的:
<root>
<MandatoryContent />
<OptionalContent />
</root>
我想一個按鈕的可見性屬性綁定到OptionalContent元素的存在。可能嗎?
不能直接綁定到XML,但您可以使用某些東西來從XML創建對象。
LinqToXSD是一個很好的人選。
它的工作原理是這樣的:您創建Xml架構,LinqToXSD根據您的架構創建類,然後您可以讀取XML並根據您的XML創建整個對象樹。
您可以將元素直接綁定到它所表示的對象,然後使用轉換器將可見性設置爲Visibility.Visible
,如果不爲空。
<Label Visibility="{Binding MyObject, Converter={StaticResource NullToVisibilityConverter}} />
一定要聲明你的轉換器在ressources
<win:CustomWindow.Resources>
<Converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</win:CustomWindow.Resources>
如果你想轉換的一個很好的例子,這裏的IValueConverter從MSDN http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx
您可以使用轉換器將bool綁定到可見性,如果這就是您要求的 –