如何添加一个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>
我正在尝试显示所选项目的总值,所选项目在 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>