WPF数据绑定 - 在多个标签中显示集合摘要

时间:2016-05-26 12:43:00

标签: .net wpf data-binding

我有一个带有ListBoxListView的WPF应用程序。 ListView显示客户列表, 并且ListBox包含硬编码的客户类型值 - (常规/白银/白金/黄金/)

如果用户在ListBox中选择了金牌,我会使用以下代码过滤列表视图:

var view = (CollectionView)CollectionViewSource.GetDefaultView(myList.ItemsSource);
view.Filter= item => true;

它工作正常,但在任何时候,我都需要在Label中显示每个类别/状态的客户数据摘要,例如输出应该如下所示

Platinum : 15
Gold     : 25
Silver   : 37
Regular  : 13
Total    : 90  

我的数据来源是

public ObservableCollection<Customer> customer { get; set; }

任何机构都知道如何绑定此数据

如果有人解决/解决类似问题,请告诉我。

2 个答案:

答案 0 :(得分:0)

string result = "";
foreach (string val in myList.ItemsSource)
{
   result += val + " : " + CollectionViewSource.Cast[val].Count + "\r\n";
}

之后,您可以将“结果”与TextBlock绑定。

答案 1 :(得分:0)

如果我正确理解客户的类型,它将是这样的:

的Xaml:

<Label Content="{Binding PlatinumCount}"/>
<Label Content="{Binding GoldCount}"/>
...

代码隐藏:

public int PlatinumCount => customer.Count(x => x.Type == "Platinum");
public int GoldCount => customer.Count(x => x.Type == "Gold");
...

在代码初始化的某处:

customer.CollectionChanged += (o, args) => 
    {
        OnPropertyChanged("PlatinumCount");
        OnPropertyChanged("GoldCount");
    };

当然,您应该在班上实施INotifyPropertyChanged