2012-09-28 143 views
0

我在Datarid的資源中定義了上下文菜單。在上下文菜單的Click事件中,我想檢查父控件(DataGrid)的名稱。我嘗試了VisualTreeHelper.GetParent()和LogicalTreeHelper.GetParent(),但都沒有反映xaml中的層次結構。如何從Click事件中獲取DataGrid控件?感謝您的回答。如何從資源中的控件發送的事件獲取父控件

代碼:

private void datagridTargetDelete_Click(object sender, RoutedEventArgs e) 
{ 
    // Check the name of the DataGrid here... 
} 

XAML:

<DataGrid Name="datagridTarget"> 
    <DataGrid.Resources> 
     <ContextMenu x:Key="DGTContextMenu"> 
      <MenuItem Header="Delete" Click="datagridTargetDelete_Click"> 
       <MenuItem.Icon> 
        <Image Height="16" Width="16" Source="{Binding ContextDeleteIcon}"/> 
       </MenuItem.Icon> 
      </MenuItem> 
     </ContextMenu> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn Header="" Width="Auto" IsReadOnly="True"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Image ContextMenu="{DynamicResource DGTContextMenu}" Height="16" Width="16" Source="{Binding ObjectImage}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

回答

0

你可能要考慮的RoutedCommand用的CommandBinding上在這種情況下的父元素。我想,這實際上是如何使用ContextMenu的。這樣,WPF會爲你找到父對象,你不必爲它搜索邏輯樹。

+0

謝謝,這個伎倆。 – SwissEngineer

2

這會給你想要的確切的事情:

var parent = ((ContextMenu)((MenuItem)sender).Parent).PlacementTarget; 
相關問題