我有一个放在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 ..
答案 0 :(得分:0)
我解决了这个问题,我将对话框改为a继承ContentControl而不是Control,并在其中添加了内容持有者..
之后我移动了对话框,所以它包裹了整个控件,之后我添加了一个路由事件,我可以听,这就像一个魅力。