【发布时间】:2011-08-05 09:22:27
【问题描述】:
我有一个数据绑定的组合框,我似乎无法设置 SelectedItem。我尝试过 SelectedValue/SelectedValuePath,但遇到了困难。
为了解释这个场景,我有一个父 ListView,它包含在 ListViewItems 中的 ComboBoxes。父 ListView 和子 ComboBox 具有相同的数据源,但显示的数据不同。例如,扩展 2 引用扩展 1。在这种情况下,我试图说明 2 镜像一个。用户需要能够更改它指向的扩展程序本身或任何其他扩展程序。除此之外它非常简单,但几乎拥有它。
这里是您可以从您最喜欢的 xaml 编辑器运行的示例。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<XmlDataProvider x:Key="xmlDataProvider">
<x:XData>
<Extensions xmlns="">
<Extension>
<ExtId>1</ExtId>
<ExtName>Extension 1</ExtName>
<ExtValue>1</ExtValue>
</Extension>
<Extension>
<ExtId>2</ExtId>
<ExtName>Extension 2</ExtName>
<ExtValue>1</ExtValue>
</Extension>
<Extension>
<ExtId>3</ExtId>
<ExtName>Extension 3</ExtName>
<ExtValue>3</ExtValue>
</Extension>
<Extension>
<ExtId>4</ExtId>
<ExtName>Extension 4</ExtName>
<ExtValue>4</ExtValue>
</Extension>
</Extensions>
</x:XData>
</XmlDataProvider>
<!-- Extensions -->
<CollectionViewSource
x:Key="CollectionViewSourceExtensions"
Source="{Binding Source={StaticResource xmlDataProvider}, XPath=Extensions/Extension}" />
</Page.Resources>
<Grid>
<ListView
ItemsSource="{Binding
Source={StaticResource CollectionViewSourceExtensions},
Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding XPath=ExtName}" />
<TextBlock Text=" - " />
<TextBlock Text="{Binding XPath=ExtValue}" />
</StackPanel>
<ComboBox
SelectedItem="{Binding XPath=ExtId}"
ItemsSource="{Binding
Source={StaticResource CollectionViewSourceExtensions},
Mode=OneTime}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding XPath=ExtId}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
【问题讨论】:
-
如果您提及您工作的平台并相应地更新您的标签(例如:wpf、.net 等)会有所帮助
-
已声明 XAML,但适用于 WPF 应用程序。
标签: wpf data-binding listview combobox selecteditem