C# 是否在WPF中为PropertyGroupDescription分配相关的表列?
当我在组合框中显示这些项目时,我使用ListCollectionView对可观察的收集项目进行分组,我有一个与账户类型相关的账户表,我想在组合框中显示按账户类型分组的账户列表 我用账目填写了可观的收款单C# 是否在WPF中为PropertyGroupDescription分配相关的表列?,c#,wpf,combobox,uicollectionview,C#,Wpf,Combobox,Uicollectionview,当我在组合框中显示这些项目时,我使用ListCollectionView对可观察的收集项目进行分组,我有一个与账户类型相关的账户表,我想在组合框中显示按账户类型分组的账户列表 我用账目填写了可观的收款单 IQueryable<account> accountQuery = _context.account; ocAccounts = new ObservableCollection<account>(accountQuery); 组合框将显示组项目,但不显示组标题 我
IQueryable<account> accountQuery = _context.account;
ocAccounts = new ObservableCollection<account>(accountQuery);
组合框将显示组项目,但不显示组标题
我错过的是我刚刚创建了一个数据示例并对其进行了调试,您需要更改xaml代码以绑定组头和linq查询以将account表与相关表连接起来 这是您的代码(Northwind的数据示例): 那么您需要这个Xaml:
<StackPanel>
<ComboBox x:Name="comboBox">
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding orid}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
它的输出:
我尝试了这个方法,是的,它是有效的,我的问题是如何使用相关的数据库表,但我不知道accountQuery中有什么数据。您可以使用带有account\u type表的linq将其联接。@Mohammed,是的,但如何做呢?我将更新我的答案,我将创建一个linq联接的示例。如果你能分享你的疑问,我将不胜感激。
IQueryable<CustomOrder> accountQuery = from cu in context.Customers join
o in context.Orders on cu.CustomerID equals o.CustomerID
orderby cu.CustomerID
select new CustomOrder
{
cucity=cu.City,
orid=o.OrderID
};
var ocAccounts = new ObservableCollection<CustomOrder>(accountQuery);
ListCollectionView lcv = new ListCollectionView(ocAccounts);
lcv.GroupDescriptions.Add(new PropertyGroupDescription("cucity"));
this.comboBox.ItemsSource = lcv;
internal class CustomOrder
{
public string cucity { get; set; }
public int orid { get; set; }
}
<StackPanel>
<ComboBox x:Name="comboBox">
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding orid}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>