ListView选择单个项目,wpf

时间:2011-03-29 08:18:41

标签: wpf listview

我有一个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>               

2 个答案:

答案 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