我有以下xaml:
<ListView Name="lstCurrentAccounts">
<ListView.View>
<GridView x:Name="grvCurrentAccounts" AllowsColumnReorder="True">
<GridViewColumn DisplayMemberBinding="{Binding AccountName}" Width="Auto" Header="Account Name" />
<GridViewColumn DisplayMemberBinding="{Binding ReconciledBalance}" Width="Auto" Header="Reconciled" />
<GridViewColumn DisplayMemberBinding="{Binding Balance}" Width="Auto" Header="Balance" />
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
以下代码隐藏:
private void updateData()
{
MyContext dc = new MyContext();
var c = (from x in dc.Accounts select x).ToList();
lstCurrentAccounts.ItemsSource = c;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lstCurrentAccounts.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("AccountTypeName");
view.GroupDescriptions.Add(groupDescription);
var r = (from x in dc.RepeatingTransactions where x.Deleted == false orderby x.NextOccurence select x).Take(10).ToList();
lstRepeating.ItemsSource = r;
}
现在,这应显示一个ListView,其数据按“AccountTypeName”分组,这是每个Account元素的字符串属性。当我运行应用程序时,数据被正确分组,但GroupStyle.HeaderTemplate中定义的组Header为空,而不是显示相应的AccountTypeName。
我做错了什么?
答案 0 :(得分:2)
好的,我有解决方案和解释。 我有两个表AccountType和Account,由1-many关系链接。 AccountType字段存在于AccountType中,但它是Account中的非支架(使用EF)只读属性,并引用相应的AccountType并从AccountType表中提取AccountTypeName(仍然与我一起?)现在这个字段,AccountTypeName在帐户似乎没有得到评估,所以我已将代码中的行更改为:
PropertyGroupDescription groupDescription = new PropertyGroupDescription("AccountType");
在Xaml中,我已将相应的行更改为:
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
现在要求我在AccountType表中覆盖ToString(),它只返回AccountTypeName字段,该字段现在显示为组头。
答案 1 :(得分:0)
我认为TextBlock应该绑定到AccountTypeName而不是Name。
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding AccountTypeName}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
答案 2 :(得分:0)
我认为您需要将CollectionViewSource分配给lstCurrentAccounts的ItemSource而不是原始数据。 CollectionViewSource准备用于排序和分组的数据。