我有一个带有ListBox
和ListView
的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; }
任何机构都知道如何绑定此数据
如果有人解决/解决类似问题,请告诉我。
答案 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
。