ListView选择单个项,wpf

4
我有一个列表视图,它的项来源是一个列表。我希望用户只能选择一个项目。当我将列表视图的SelectionMode设置为Single时,用户仍然可以选择多个项目,而且似乎列表视图会疯狂地选择用户没有选择的项目...看起来非常奇怪...有人知道可能是什么问题吗?
我无法在此处粘贴屏幕截图,我没有粘贴选项.....
这是一个XAML -
<StackPanel MinWidth="600" Margin="0,0,0,10" HorizontalAlignment="Left" Width="600">
    <GroupBox Header="Command Queue" BorderThickness="0" Foreground="CornflowerBlue">
                        <Border BorderThickness="1.5" CornerRadius="10">
                            <ListView SelectionMode="Single" Background="Transparent" BorderThickness="0" Margin="5" Name="ListView_CmdQ" ItemsSource="{Binding}" MaxHeight="450" FontFamily="verdana" FontSize="12">
                            </ListView>
                        </Border>
                    </GroupBox>
</StackPanel>               

1
能看到XAML代码也很好。 - Christian
你是否在代码后端更改了ListView的任何属性或行为?我在xaml中看不出ListView有任何问题。 - Christian
我在代码后台所做的唯一事情就是将 "this.ListView_CmdQ.DataContext" 设置为 "list_listItems"。 - N.D
好的,我已经粘贴了您的XAML代码,并在代码后台文件中添加了以下代码:List<string> items = new List<string>();items.Add("BLA"); items.Add("BL2"); items.Add("BL3"); items.Add("BL4"); items.Add("BL5");ListView_CmdQ.DataContext = items;这将生成一个完美工作的ListView,只能进行单个选择。 - Christian
list_listItems 包含什么内容? - Andrei Pana
显示剩余2条评论
2个回答

2

你的列表中的项目是否出现了多次?我之前遇到过这样的问题:

var a = new Thing();
var b = new Thing();

var myList = new List<Thing>();
myList.Add(a);
myList.Add(b);
myList.Add(a);
myList.Add(b);

如果您将ListView绑定到myList,则会获得您所描述的行为。基本上,这是因为列表中有多个项目与SelectedItem匹配,因此列表的样式会变得有点混乱。解决方法之一是将每个项目包装在另一个类中:

var myList = new List<WrappedThing>();
myList.Add(new WrappedThing((a));
myList.Add(new WrappedThing((b));
myList.Add(new WrappedThing((a));
myList.Add(new WrappedThing((b));

这意味着列表中的每个项目都是唯一的,即使它们包装的项目可能不是唯一的。


2
@olia 如果 Dan Puzey 的回答解决了问题,请点击左侧的复选框将其标记为正确答案。 - H.B.

0

如果您的list_listItems包含相同的字符串两次,就会出现这种情况。这种情况发生在值类型和引用字符串中。您应该将每个字符串都包装在TextBlock中,并将其放入listview中。

看起来这仍然是一个活跃的错误报告(自2007年以来)here


好的,现在我明白了我的问题,我在列表中放入了很多相同的字符串...谢谢。 - N.D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接