如何从一个特殊的行填充列

本文关键字:填充 一个 | 更新日期: 2023-09-27 18:11:35

我有一个在wpf中生成的Listview

看到:

<ListView x:Name="lstVCOM" Height="450" Margin="10,10,10,0" VerticalAlignment="Top">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="25" Header="Slot" DisplayMemberBinding="{Binding Path=Slot}" />
                    <GridViewColumn Width="140" Header="Messung" DisplayMemberBinding="{Binding Path=MessungNr}" />
                    <GridViewColumn Width="140" Header="Minimal" DisplayMemberBinding="{Binding Path=Min}"/>
                    <GridViewColumn Width="140" Header="Maximal" DisplayMemberBinding="{Binding Path=Max}"/>
                    <GridViewColumn Width="140" Header="Aktuelle Messung" DisplayMemberBinding="{Binding Path=MessungAkt}"/>
                    <GridViewColumn Width="140" Header="Durchschnitt" DisplayMemberBinding="{Binding Path=Durschnitt}"/>
                </GridView>
            </ListView.View>
        </ListView>

我想一步一步地填充,这意味着我想先填充Slot列,然后是Messung列,然后是.....所有在第一行,然后转到下一行,做同样的事情。

我该怎么做呢?

lstVCOM.item。补充的吗?

thx

如何从一个特殊的行填充列

如果您有一个表示一行的object,我将其命名为VCOM,那么您可以创建一个List<T>来表示VCOM s的集合。

public class VCOM {
    public int Slot { get; set; }
    public string MessungNr { get; set; }
    public decimal Min { get; set; }
    public decimal Max { get; set; }
    public string MessungAkt { get; set; }
    public decimal Durschnitt { get; set; }
}
private List<VCOM> _ListVCOM = new List<VCOM>();
public List<VCOM> ListVCOM {
    get {
    return _ListVCOM;
    }
    set {
    _ListVCOM = value;
    OnPropertyChanged("ListVCOM");
    }
}

实现INotifyPropertyChanged,这样当你添加一个新的VCOM对象到List<VCOM>时,你的DataGrid将会更新。

ListVCOM.Add(new VCOM() {
    Slot = 1,
    MessungNr = "Messung",
    Min = 0.0M,
    Max = 1.0M,
    MessungAkt = "Aktuelle Messung",
    Durschnitt = 0.5M,
});

要手动设置单个属性,您可以检索对象并基于知道Slot属性设置其他属性(假设它是唯一的)。

int currentSlotNum = 1;
ListVCOM.Where(a => a.Slot.Equals(currentSlotNum)).First().Min = 1.0M;

当你想添加一个新的VCOM对象时,只需调用上面的Add Method,它就会用新的行更新。

    <ListView x:Name="lstVCOM" Height="450" Margin="10,10,10,0" VerticalAlignment="Top" DockPanel.Dock="Top" 
              ItemsSource="{Binding ListVCOM, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="25" Header="Slot" DisplayMemberBinding="{Binding Path=Slot}" />
                <GridViewColumn Width="140" Header="Messung" DisplayMemberBinding="{Binding Path=MessungNr}" />
                <GridViewColumn Width="140" Header="Minimal" DisplayMemberBinding="{Binding Path=Min}"/>
                <GridViewColumn Width="140" Header="Maximal" DisplayMemberBinding="{Binding Path=Max}"/>
                <GridViewColumn Width="140" Header="Aktuelle Messung" DisplayMemberBinding="{Binding Path=MessungAkt}"/>
                <GridViewColumn Width="140" Header="Durchschnitt" DisplayMemberBinding="{Binding Path=Durschnitt}"/>
            </GridView>
        </ListView.View>
    </ListView>

这是DataGrid,有适当的ItemsSource绑定。