在代码中向WPF列表视图中的列中添加项

本文关键字:添加 视图 列表 代码 WPF | 更新日期: 2023-09-27 18:17:40

我的问题是WPF(不是win表单),非常类似于这个:在WPF ListView中向列中添加项

然而,我有遗留问题,因为我必须使用包含大约100个变量的结构体。该结构体需要传递给一个函数,该函数将更新其值。

struct alotofthings
{
float item1;
float item2;
.
.
.
UInt16 item100;
}

我使用System。反射提取出fieldinfo.name和GetValue()以获得变量的值。接下来我想在ListView(运行时创建)中显示它们,比如

变量名|值(<——这是列标头)

item1 ..............|

1223.3

item2 ..... ........|

6.673

... .....................|…

item100 ...........| 1

当使用系统管道订阅更新struct对象时,这些值将每隔几毫秒动态更改一次。每次发生这种情况时,我都想清除ListView并重新填充图形(方法1)。但是我需要帮助将项目添加到各自的列中。

我还想到用INotifyPropertyChanged(方法2)创建一个类,但这将成为与方法1相同的情况,因为我仍然必须使用更新的结构来更新类。我也不知道如何动态设置绑定,因为我的类将有100个属性。

最后我确实想到了使用ObservableCollection,但随后我也将不得不清除其内容并再次重新添加项,因为结构体通过遗留更新函数(方法3)更新。我不知道这与方法1相比有多快。

在代码中向WPF列表视图中的列中添加项

试试这个方法

      <ListView x:Name="lstvItemsList">
      <ListView.View>
         <GridView>
            <GridViewColumn Header="Id" DisplayMemberBinding="{Binding itemName}"/>
             <GridViewColumn Header="Name" DisplayMemberBinding="{Binding value}"/>
         </GridView>
      </ListView.View>
     </ListView>

然后创建一个保存值的结构

    public struct Items
    {
        public string itemName { get; set; }
        public string value { get; set; }
    }

然后像这样绑定值

       lstvItemsList.Items.Add(new Items
                            {
                                itemName ="item1" ,
                                value = "125"
                            }