将代码添加到代码

时间:2015-10-14 06:04:51

标签: c# wpf listview

我的问题是WPF(不是胜利形式),与此非常相似: Add Items to Columns in a WPF ListView

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

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

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

变量名称|值(< ---这是列标题)

item1 .............. | 1223.3

item2 ..... ........ | 6.673

...... ..................... | ...

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

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

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

最后我想到了使用ObservableCollection,但是当我通过遗留更新函数(方法3)更新结构时,我还必须清除其内容并重新添加项目。我不知道这与方法1相比有多快。

1 个答案:

答案 0 :(得分: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"
                            }