我希望这很简单,只是错过了一些明显的东西。我正在使用MVVM,并且绑定到Datagrid
的{{1}}依次填充CollectionViewSource
,ObservableCollection
最初未填充,并通过以下方式添加用户界面上的勾选框
我遇到的问题是,当ObservableCollection
被添加到时,标题会出现在ObservableCollection
上的分组上,但各行本身却没有。
任何帮助真的很感激,
这是我的Datagrid的XAML
DataGrid
我的收藏代码
<DataGrid DataContext="{Binding GroupedBookings}"
ItemsSource="{Binding SourceCollection}"
AutoGenerateColumns="False"
SelectionMode="Single"
SelectionUnit="FullRow"
CanUserSortColumns="True"
SelectedItem="{Binding SelectedBooking}"
CanUserAddRows="False">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=MemberCount.SupporterType}"
FontWeight="Bold"
Padding="3" />
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=ItemCount}"
Margin="8 0 4 0" />
</StackPanel>
</Expander.Header>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Cost"
Binding="{Binding Cost}" />
<DataGridTextColumn Header="Order No"
Binding="{Binding LinkedOrderID}" />
</DataGrid.Columns>
</DataGrid>
要确认可观察集合的更新与VM中的_bookings = new ObservableCollection<Booking>(rep.Bookings_Get().Where(x => x.JobID == CurrentJob.JobID));
GroupedBookings = CollectionViewSource.GetDefaultView(Bookings);
GroupedBookings.GroupDescriptions.Add(new PropertyGroupDescription("MemberCount.SupporterType"));
一样正常,标题中的CollectionView
甚至会在UI中增加,我似乎无法使行显示。< / p>
提前致谢
编辑:
根据EthicalLogics建议,我已将我的代码更改为直接分配给ItemCount
而不是Bookings
,但这没有帮助_bookings
定义如下:
Bookings
以下是public ObservableCollection<Booking> Bookings
{
get { return _bookings; }
set
{
_bookings = value;
OnPropertyChanged("Bookings");
}
}
GroupedBookings
答案 0 :(得分:2)
我将以下内容添加到我的XAML中,结果我错过了一些小东西,但是看过多个使用CollectionViewSource并在数据网格中分组的例子我只发现微软一个包含它作为GroupStyle的一部分
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
希望这有助于任何有类似问题的人
答案 1 :(得分:0)
public ObservableCollection<Booking> _bookings{get;set;}
绑定源必须是属性而不是字段。因为绑定系统使用反射,它只查找属性而不是字段。我希望这会有所帮助。