添加到Collection时,WPF Grouped Datagrid行不可见

时间:2013-01-16 13:06:12

标签: c# wpf datagrid

我希望这很简单,只是错过了一些明显的东西。我正在使用MVVM,并且绑定到Datagrid的{​​{1}}依次填充CollectionViewSourceObservableCollection最初未填充,并通过以下方式添加用户界面上的勾选框

我遇到的问题是,当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

2 个答案:

答案 0 :(得分:2)

我将以下内容添加到我的XAML中,结果我错过了一些小东西,但是看过多个使用CollectionViewSource并在数据网格中分组的例子我只发现微软一个包含它作为GroupStyle的一部分

<Expander.Content>
    <ItemsPresenter />
</Expander.Content>

希望这有助于任何有类似问题的人

答案 1 :(得分:0)

public ObservableCollection<Booking> _bookings{get;set;}

绑定源必须是属性而不是字段。因为绑定系统使用反射,它只查找属性而不是字段。我希望这会有所帮助。