Datagrid 列 Header 模板绑定不适用于多个实例

Datagrid Column Header Template Binding Not working for Multiple Instances

我有一个数据网格模板列,其中包含一个 header 模板和一个单元格模板。此数据网格位于名为 ViewOne 的视图中。 ViewOne 的多个实例被注入另一个视图 - ViewTwo。

问题就在这里:当我在 ViewTwo 中创建 ViewOne 的单个实例时,一切正常。但是,当我创建它的多个实例时,除 header 模板中的按钮外,一切仍然完美。我试图找出原因,但我似乎无法解决问题,这真的很奇怪,因为即使单元格模板中的按钮也能正常工作,而且它们的连接方式几乎相同。

代码如下:

<DataGridTemplateColumn Width="Auto">
                            <DataGridTemplateColumn.Header>
                                <Button Background="Transparent" Height="Auto" Command="{Binding DataContext.AddRowCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
                                Width="Auto" BorderBrush="Transparent" ToolTip="Add new row">
                                  <Image Source="/DemoApp.Resource;component/Icons/Default/add-icon.png"/>
                                </Button>
                           </DataGridTemplateColumn.Header>

                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Button Width="Auto" Background="Transparent" Height="Auto"  
                                    ToolTip="Delete selected row" BorderBrush="Transparent"
                                    Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
                                    CommandParameter="Separator">
                                        <Image Source="/DemoApp.Resource;component/Icons/Default/Delete.ico"/>
                                    </Button>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我终于发现问题了。我只是将按钮命令绑定的 AncestorType 从 Datagrid 更改为 UserControl。显然,该绑定适用于集合中 UserControl 的第一个实例,但不适用于其他实例。有点奇怪,但它奏效了。

<Button Background="Transparent" Height="Auto" Command="{Binding DataContext.AddRowCommand, RelativeSource={RelativeSource AncestorType= UserControl}}" ...>

...
</Button