-4

为 SL DataGrid 实现摘要标题行我找不到绑定到 DataGridsItemsSource属性(并应用IValueConverter)的方法。

当简单地指定绑定转换器接收 ViewModel 作为 DataGrids DataContext 但我宁愿不将 ViewModel 耦合到我的转换器:

<!-- somewhere in my DataGrid ControlTemplate -->
<sdk:DataGridCell Content="{Binding Converter={StaticResource SummaryRow}}" />

我试图创建一个RelativeSource,但 xaml 抱怨我不能AncestorType在这种情况下使用:

<sdk:DataGridCell Content="{Binding RelativeSource={RelativeSource FindAncestor AncestorType={x:Type DataGrid}}, Converter={StaticResource SummaryRow}}" />

我的 DataGrid 本身绑定到CollectionViewSource处理分组和排序的。

我已经实现了DataGridRowGroupHeader使用第一种方法显示列总和,并且相应的转换器接收到一个CollectionViewGroup我可以从中检索项目而无需耦合到 ViewModel。

4

1 回答 1

1

我想出了实现这一点的正确方法,并将ListCollectionView绑定到 DataGrids传递到我自定义ItemsSource的内部:IValueConverterControlTemplate

<Style TargetType="sdk:DataGrid">
  <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="sdk:DataGrid">

    <!-- Rest of ControlTemplate xaml omitted -->

    <sdk:DataGridCell 
        Content="{Binding Path=ItemsSource, 
                          RelativeSource={RelativeSource}, 
                          Converter={StaticResource SummaryRow}}" />
    <!-- ... -->

    </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
于 2013-01-31T09:11:27.597 回答