在代码中向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.3item2 ..... ........|
6.673... .....................|…
item100 ...........| 1
当使用系统管道订阅更新struct对象时,这些值将每隔几毫秒动态更改一次。每次发生这种情况时,我都想清除ListView并重新填充图形(方法1)。但是我需要帮助将项目添加到各自的列中。
我还想到用INotifyPropertyChanged(方法2)创建一个类,但这将成为与方法1相同的情况,因为我仍然必须使用更新的结构来更新类。我也不知道如何动态设置绑定,因为我的类将有100个属性。
最后我确实想到了使用ObservableCollection,但随后我也将不得不清除其内容并再次重新添加项,因为结构体通过遗留更新函数(方法3)更新。我不知道这与方法1相比有多快。
试试这个方法
<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"
}