原文: WPF關于控件 父級控件,子級控件,控件模闆中的控件,等之間的互相通路 1,在菜單中通路 彈出菜單的控件
var mi = sender as MenuItem;//菜單條目 MenuItem
var cm = mi.Parent as ContextMenu;//通路他爹 菜單 contextMenu
var t1 = cm.PlacementTarget as ScrollContentPresenter; //通路 彈出此菜單的控件
2.用模版中的子元素 來引用 使用了此模版的控件
var t1 = cm.PlacementTarget as ScrollContentPresenter; //這個東西是在模版中的
var contorl1 = t1.TemplatedParent; //用templateParent 通路到他的模版裡的父控件
DependencyObject parent = (DependencyObject)contorl1;// 定義一個DependencyObject, 這東西是幾乎是所有視覺控件的父類
while(!(parent is DataGrid)) //利用視圖樹找離contorl1最近的一個datagrid,在這裡就是引用了模版的datagrid
{
parent = VisualTreeHelper.GetParent(parent);
}
DataGrid dataGrid = parent as DataGrid;
舉了這兩個例子,就可以四兩撥動千斤了