只选择两个 ListView 中的一项

sk_*_*sk_ 2 c# wpf xaml listview

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

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

我的问题如下:当我在 a 中选择一个项目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>
Run Code Online (Sandbox Code Playgroud)

sk_*_*sk_ 5

我终于让它工作了,只需替换SelectedItemSelectedValue.

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