Привязка шаблона заголовка столбца данных не работает для нескольких экземпляров - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть столбец шаблона сетки данных, который содержит шаблон заголовка и шаблон ячейки. Эта сетка данных находится в представлении под названием ViewOne. Несколько экземпляров ViewOne внедряются в другое представление - ViewTwo.

В этом и заключается проблема: когда я создаю один экземпляр ViewOne во ViewTwo, все работает отлично. Однако, когда я создаю несколько его экземпляров, все по-прежнему работает отлично, за исключением кнопки в шаблоне заголовка. Я попытался выяснить, почему, но я не могу указать на проблему, и это действительно странно, потому что даже кнопка в шаблоне ячейки работает нормально, и они подключены почти так же.

Вот код:

<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>

1 Ответ

0 голосов
/ 26 февраля 2020

Я наконец обнаружил проблему. Я просто изменил AncestorType привязки команды кнопки с Datagrid на UserControl. Видимо, привязка работала для первого экземпляра UserControl в коллекции, но не для других. Было немного странно, но это сработало.

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

...
</Button
...