合并 WPF 组合框项中的文本和 XML 数据
Merging text and XML data in combobox items in WPF
我在 WPF 中有一个组合框,它从 XML 获取数据,如下所示。
<?xml version="1.0"?>
<Root>
<Book>
<Name>Title1</Name>
<Name>Title2</Name>
<Name>Title3</Name>
</Book>
</Root>
<ComboBox x:Name="cb_Book" ItemsSource="{Binding Source={StaticResource XmlData}, XPath=./Book/Name}"/>
我想将静态默认文本与从 XML 检索到的项目合并。我尝试了几种方法,例如显示 here 的 CompositeCollection,但没有成功。有没有最好的方法来做到这一点(最好全部在 XAML 中)?
最后 ComboBoxItems 应如下所示:
Title1 #from XML
Title2 #from XML
Title3 #from XML
MoreTitle #Static Default text
CompositeCollection 和 XMLDataProvider 是一个可行的方法。
<StackPanel xmlns:system="clr-namespace:System;assembly=mscorlib">
<StackPanel.Resources>
<XmlDataProvider x:Key="XmlData" XPath="./Root/Book/Name">
<x:XData>
<Root xmlns="">
<Book>
<Name>Title1</Name>
<Name>Title2</Name>
<Name>Title3</Name>
</Book>
</Root>
</x:XData>
</XmlDataProvider>
<CompositeCollection x:Key="CompositeCollection">
<CollectionContainer Collection="{Binding Source={StaticResource XmlData}}"/>
<system:String>MoreTitle</system:String>
<system:String>SomeMoreTitle</system:String>
</CompositeCollection>
</StackPanel.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource CompositeCollection}}"/>
</StackPanel>
我在 WPF 中有一个组合框,它从 XML 获取数据,如下所示。
<?xml version="1.0"?>
<Root>
<Book>
<Name>Title1</Name>
<Name>Title2</Name>
<Name>Title3</Name>
</Book>
</Root>
<ComboBox x:Name="cb_Book" ItemsSource="{Binding Source={StaticResource XmlData}, XPath=./Book/Name}"/>
我想将静态默认文本与从 XML 检索到的项目合并。我尝试了几种方法,例如显示 here 的 CompositeCollection,但没有成功。有没有最好的方法来做到这一点(最好全部在 XAML 中)?
最后 ComboBoxItems 应如下所示:
Title1 #from XML
Title2 #from XML
Title3 #from XML
MoreTitle #Static Default text
CompositeCollection 和 XMLDataProvider 是一个可行的方法。
<StackPanel xmlns:system="clr-namespace:System;assembly=mscorlib">
<StackPanel.Resources>
<XmlDataProvider x:Key="XmlData" XPath="./Root/Book/Name">
<x:XData>
<Root xmlns="">
<Book>
<Name>Title1</Name>
<Name>Title2</Name>
<Name>Title3</Name>
</Book>
</Root>
</x:XData>
</XmlDataProvider>
<CompositeCollection x:Key="CompositeCollection">
<CollectionContainer Collection="{Binding Source={StaticResource XmlData}}"/>
<system:String>MoreTitle</system:String>
<system:String>SomeMoreTitle</system:String>
</CompositeCollection>
</StackPanel.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource CompositeCollection}}"/>
</StackPanel>