WPF DataGridTemplateColumn数据绑定到外面控制?

时间:2010-02-24 10:50:34

标签: wpf data-binding

我有一个放在usercontrol中的控件,它暴露了一个带有DepenceyPropety(ShowCommand)的ICommand, 然后我有一个带有几列的datagrid(wpf工具包),其中一列有一个删除按钮

<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}" />

并且作为im在DataTemplate中它找不到元素,我无法组合ElementName和Relative源,那么我如何定义一个可以访问在datatemplate外声明的元素的绑定?

我试图绑定的命令位于ConfirmationDialog.YesCommand ..

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,我将对话框改为a继承ContentControl而不是Control,并在其中添加了内容持有者..

之后我移动了对话框,所以它包裹了整个控件,之后我添加了一个路由事件,我可以听,这就像一个魅力。