WPF DataGridTemplateColumn привязать данные для управления снаружи? - PullRequest
0 голосов
/ 24 февраля 2010

Ну, у меня есть элемент управления, помещенный в usercontrol, и он предоставляет ICommand с DepenceyPropety (ShowCommand), а затем у меня есть сетка данных (wpf toolkit) с несколькими столбцами, и в одном из них есть кнопка удаления

<Custom:DataGrid Margin="0" ItemsSource="{Binding Todos}" AutoGenerateColumns="False">
    <Custom:DataGrid.Columns>
      <Custom:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
        <Custom:DataGridTemplateColumn>
            <Custom:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button CommandParameter="{Binding}"
                            Command="{Binding ElementName=ConfirmDeleteDialog, Path=ShowCommand}" 
                            Content="Delete" />
                </DataTemplate>
            </Custom:DataGridTemplateColumn.CellTemplate>
        </Custom:DataGridTemplateColumn>
    </Custom:DataGrid.Columns>
</Custom:DataGrid>
<local:ConfirmationDialog x:Name="ConfirmDeleteDialog" 
                          Title="Confirm delete!" 
                          d:LayoutOverrides="Width" 
                          Message="Are you sure that you want to delete the selected todo?" 
                          YesCommand="{Binding DeleteCommand}" />

и, так как я в DataTemplate, он не находит элемент, и я не могу объединить ElementName и относительный источник, так как я могу определить привязку, которая может получить доступ к элементу, объявленному вне таблицы данных?

Команда, к которой я пытаюсь привязаться, находится в ConfirmationDialog.YesCommand ..

1 Ответ

0 голосов
/ 25 февраля 2010

Ну, я решил это так, я изменил свой диалог на a, чтобы наследовать от ContentControl вместо Control, и добавил в него владельца контента.

после этого я переместил диалоговое окно так, чтобы оно обернуло весь элемент управления, после этого я добавил перенаправленное событие, которое я могу слушать, и это работало как чудо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...