listview中具有相同文本/内容的项目的问题

时间:2012-12-14 20:36:36

标签: c# listview observablecollection

我将listview绑定到ObservableCollection字符串。

的Xaml:

<ListView Margin="4" Name="LvRiserList" DockPanel.Dock="Top" ItemsSource="{Binding GetAllRiserTags, UpdateSourceTrigger=PropertyChanged}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

代码:

public ObservableCollection<string> GetAllRiserTags
{
    get
    {
        var riserTags = new ObservableCollection<string>();
        foreach (var riser in RiserCollection)
        {
            riserTags.Add(riser.Tag);
        }
        return riserTags;
    }
}

单击按钮时,列表会逐个填充,每个标记的默认值为“空”。

列表将按预期填充列表,但是当我尝试选择其中一个项目时会出现问题;只有第一个被选中。如果我为标签提供不同(唯一)的默认名称,则会按预期选择它们。

知道为什么会这样做吗?

2 个答案:

答案 0 :(得分:0)

删除ListView.ItemTemplate并试一试。

<ListView Margin="4" Name="LvRiserList" DockPanel.Dock="Top" ItemsSource="{Binding GetAllRiserTags, UpdateSourceTrigger=PropertyChanged}">
</ListView>

答案 1 :(得分:0)

创建包含id和value属性的自定义类。覆盖GetHash和Equals函数。 在您的Viewmodel中计算id或给它一些唯一值。

绑定到value属性。

如果您不使用自定义类,使用相同值的字符串将始终遇到此问题:)