WPF列表框:选择有问题

WPF列表框:选择有问题,wpf,listbox,selection,Wpf,Listbox,Selection,在我的XAML文件中,我有一个声明如下的列表框: <ListBox x:Name="lstDeck" Height="280" ItemsSource="{Binding Path=Deck}" > <ListBox.ItemTemplate> <DataTemplate> <ListBoxItem Conte

在我的XAML文件中,我有一个声明如下的列表框:

           <ListBox x:Name="lstDeck" Height="280" ItemsSource="{Binding Path=Deck}"  >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <ListBoxItem  Content="{Binding}" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

在我的视图模型中,Deck是一个可观察的集合,因此绑定直接显示我的集合的内容

但当我有几个值保持相同的值时(例如“10”六次), 列表框中的选择有一个奇怪的行为:它选择2-3个元素,而不是我单击的那个元素

此外,当我单击另一个listBoxItem时,它不会取消对上一个选定项的聚焦

这样就不可能看到实际选择了哪个项目,也不可能获得SelectedIndex值


有人有想法吗?

问题是列表框无法区分不同的值。因此,一旦您单击其中一个“10”,它将设置SelectedItem属性并更新其显示。因为它无法区分值类型,所以会将每个“10”标记为选中

但是为什么列表框中会多次出现“10”?如果它只是数字值10或字符串“10”,对我来说没有任何意义

如果后面有一个更复杂的模型,并且只显示一个属性,那么应该绑定复杂模型并设置DisplayMemberPath

C#

XAML


致以最诚挚的问候

奥利弗·哈纳皮(Oliver Hanappi)

它显示数字10,但这只是一个例子。实际上,我有一个显示游戏卡集合的列表框,另一个显示添加到牌组中的这些卡的ID。由于同一张卡可能有3-4次,因此可能有几次相同的值。这是我的问题,我明白你的问题。将卡结构转换为类。因此,用户将看到同一张卡两次,但在内部它将不相同(参考相等与值相等)。确保不要以实现值相等的方式重写Equals和GetHashCode方法。Oliver是正确的。列表框使用数字“10”作为对象的键。因为您有多个“10”,所以所有这些都被选中。我知道这是一个很老的问题,但我只是好奇你的答案,如果displaymemberPath设置为Value,它将如何帮助将模型绑定到另一个列表框?可能是一些很明显的事情,我就是看不懂。。非常感谢。
public class Model
{
    public Guid Id { get; set; }
    public string Value { get; set; }
}
<ListBox ItemsSource="{Binding Path=Models}" DisplayMemberPath="Value" />

<ListBox ItemsSource="{Binding Path=Models}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=Value}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>