我有一个listview,它的项目来源是一个列表。我希望用户只选择一个项目。当我将listview的SelectionMode设置为单个时,用户仍然可以选择多个项目,看起来listview很疯狂,并选择用户没有选择的项目...看起来很奇怪...任何人都可以知道什么可能是问题?
我不能在这里粘贴截图,我没有粘贴选项.....
这是一个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>
答案 0 :(得分: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));
...这意味着列表中的每个项目都是唯一的,即使它们包装的项目可能不是。
答案 1 :(得分:0)
如果list_listItems包含两次相同的字符串,则会出现此行为。这会发生在值类型和引用字符串中。您应该将每个字符串包装在TextBlock中并将其放在listview中。
看起来这是一个仍然有效的错误报告(自2007年起)here。