如何添加一个ListView的列

How to add up a column of a ListView

我正在尝试显示所选项目的总值,所选项目在 ListView 中。项目的值出现在列表中,但我希望项目的总值显示在文本框中。我的代码如下:

Basket.xaml

       private static ObservableCollection<Menu.PassedData> passedData = new ObservableCollection<Menu.PassedData>();

 private double totalValue;
        public double TotalValue
        {
            get { return totalValue; }
            set
            {
                totalValue = value;
                OnPropertyChanged("TotalValue");
            }
        }

  protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Menu.PassedData data = e.Parameter as Menu.PassedData;

    if (data != null) //If data is not 0 
    {
        PassedData.Add(data); //Increment data in list view

        double tempTotalValue = 0;
        foreach (var record in PassedData)
        {
            tempTotalValue = tempTotalValue + record.Value;
        }
        TotalValue = tempTotalValue;
    }
}


    }

存储值的列表(Basket.xaml)

 <ListBox x:Name="listBox1" HorizontalAlignment="Left" Height="265" Margin="278,175,0,0" VerticalAlignment="Top" Width="112">
        <ListView x:Name="PriceView" ItemsSource="{Binding PassedData}" HorizontalAlignment="Left" VerticalAlignment="Center">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="auto"/>
                            <ColumnDefinition Width="auto"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto"/>
                        </Grid.RowDefinitions>
                        <!--<TextBox Grid.Column="0" Text="{Binding Name}" IsReadOnly="True" /> !-->
                        <TextBox Grid.Column="1" Text="{Binding Value}" IsReadOnly="True" />
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ListBox>

所以基本上是将列表视图中的值列相加并显示在文本框中。

Getting WPF ListView.SelectedItems in ViewModel 之类的内容可能会有用。然后在您的命令中使用 linq 获取所有值的总和,并使用该值设置一些 属性(绑定)。

有很多方法可以实现这一点。例如,您可以使用您的代码: 在你的 Basket.xaml.cs 添加 TotalValue 属性:

private double totalValue;
public double TotalValue
{
    get { return totalValue; }
    set
    {
        totalValue = value;
        OnPropertyChanged("TotalValue");
    }
}

然后在您的 OnNavigatedTo 方法中,您可以遍历列表的所有元素以获得总值:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Menu.PassedData data = e.Parameter as Menu.PassedData;

    if (data != null) //If data is not 0 
    {
        PassedData.Add(data); //Increment data in list view

        double tempTotalValue = 0;
        foreach (var record in PassedData)
        {
            tempTotalValue = tempTotalValue + record.Value;
        }
        TotalValue = tempTotalValue;
    }
}

然后只需将此值绑定到让我们在您的视图中说 Textblock Basket.xaml:

<TextBlock Text="{Binding TotalValue}"></TextBlock>