在两个ListView中只选择一个项目

时间:2015-01-17 16:22:41

标签: c# wpf xaml listview

我有两个ListView,每个都绑定到我的ViewModel中的特定集合,我希望能够全局选择一个项目。

每个ListView都将SelectedItem属性绑定到ViewModel中的同一属性。

我的问题如下:当我在ListView中选择一个项目,然后在另一个ListView中选择另一个项目时,第一个项目保持选中状态。 我可以通过一些代码隐藏来实现这一点,但我想知道是否存在纯XAML解决方案。

XAML:

<ListView SelectionMode="Single" ItemsSource="{Binding Path=MyList1}" SelectedItem="{Binding Path=MySelectedItem}">
   <ListView.ItemTemplate>
        <DataTemplate>
             <TextBlock Text="{Binding Name}" />
        </DataTemplate>
   </ListView.ItemTemplate>
</ListView>
<ListView SelectionMode="Single" ItemsSource="{Binding Path=MyList2}" SelectedItem="{Binding Path=MySelectedItem}">
   <ListView.ItemTemplate>
        <DataTemplate>
             <TextBlock Text="{Binding Title}" />
        </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

2 个答案:

答案 0 :(得分:3)

我终于通过SelectedItem替换SelectedValue来实现它。

在这个用例中,两个属性具有相同的行为,但如果绑定的选定项不在列表中,则后者正确处理取消选择。

答案 1 :(得分:0)

您需要在Mode=TwoWay中使用SelectedItem。它应该工作。