我已經定義了一個DataGrid這樣的:
禁用上下文菜單WPF
<cc:PEDataGrid AutoGenerateColumns="False"
ItemsSource="{Binding Rows}"
Width="Auto"
PreviewMouseRightButtonDown="PEGrid_PreviewMouseRightButtonDown"
Loaded="CommonPEGrid_Loaded">
<wpfkit:DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Cut" />
<MenuItem Header="Copy"/>
<MenuItem Header="Paste"/>
</ContextMenu>
</wpfkit:DataGrid.ContextMenu>
</cc:PEDataGrid>
這顯示每一個細胞contextMenu當右鍵點擊完成。
我想要禁用所有的單元格,除了標題,還有一些條件爲的標題的上下文菜單。 (我不想使用,因爲我不想在這裏解釋了一些其他問題DataGridHeaderStyle。)
我已經在數據網格並在處理程序我試圖做類似定義的PreviewMouseRightButtonDown處理程序這::
private void PEGrid_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
DependencyObject depObj = (DependencyObject)e.OriginalSource;
while ((depObj != null) && !(depObj is DataGridColumnHeader))
{
depObj = VisualTreeHelper.GetParent(depObj);
}
if (depObj == null)
{
return;
}
if (depObj is DataGridColumnHeader)
{
//some condition here which says whether contextmenu is required on this header
(depObj as DataGridColumnHeader).ContextMenu = null;
//the above line is not working!!!!
}
else
{
(depObj as DataGridCell).ContextMenu = null;
//the above line not working!!!!
}
}
我想知道我哪裏錯了!請幫助我解決這個問題。還指導我以更好的方式做,如果我在一個錯誤的方式:)
我使用此響應作爲停止標題上顯示的上下文菜單的基礎。感謝您發佈最終運作的解決方案。 – coffeecoder 2014-06-18 14:08:28
什麼是dg here..and我們怎樣才能在任何地方調用這個事件.. – Silver 2014-09-25 09:39:14