【问题标题】:Add index column on listview在列表视图上添加索引列
【发布时间】:2014-02-12 01:08:45
【问题描述】:

我正在使用 WPF,我有一个带有绑定到 ObservableCollection 的列表视图的窗口。

看起来是这样的:

public ObservableCollection<Task> TaskList { get; set; }

任务是一个模型

public class Task 
{
   public int Id { get; set; }
   public string Name { get; set; }
   .... 
}

ListView.ItemTemplate 的 XAML:

<ListView.ItemTemplate>
   <DataTemplate>
      <WrapPanel>
         <TextBlock Text="{Binding Name}" />
      </WrapPanel>
   </DataTemplate>
</ListView.ItemTemplate>

我不能使用 ID,因为集合中的项目可以删除或排序,我需要集合中的索引(如果集合发生更改,则更新)。

我想找到一种将“索引列”添加到列表视图的方法,因此 ObservableCollection 中任务的索引将位于每一行中的名称之前(见下文)。

| 0 任务
| 1 任务测试
| 2 其他任务
| 3 最后一个任务

感谢您的帮助!

【问题讨论】:

    标签: c# wpf listview


    【解决方案1】:

    据我所知,添加索引并不容易:(

    如果我是你,我会为项目添加一个属性,它会显示在你的列表视图中。该属性将填充 ViewModel 并递增。但是如果你排序或删除它应该被重写。

    您也可以尝试在您的 ViewModel 中创建一个属性,例如:

    private int counter;
    public int Index
    {
        get
        {
            counter++;
            return counter;
        }
    }
    

    并使用RelativeSource FindAncestor 将其绑定到每个元素。但同样 - 它应该在 collectionChange 上刷新

    【讨论】:

    • 不幸的是,我就是这么想的,没有神奇的方法可以做到这一点:(但是谢谢你的回答,这就是我将使用的。
    【解决方案2】:

    试试这个,创建一个视图模型

    public class TaskViewModel : Task
    {
        private int _Index;
    
        public int Index
        {
            get { return _Index; }
            set { _Index = value; }
        }
    }
    

    项目模板:

    <ListView.ItemTemplate>
        <DataTemplate>
            <WrapPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Index}" Width="Auto" Height="Auto" Margin="0,0,4,0"/>
                <TextBlock Text="{Binding Name}" Width="Auto" Height="Auto"/>
        </WrapPanel>
    </ListView.ItemTemplate>
    

    后面的代码:

    TaskViewModel vm = new TaskViewModel();
    vm.Id = 0;
    vm.Index = 1;
    vm.Name = "sad";
    TaskList.Add(vm);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多