天天看點

WPF關于控件 父級控件,子級控件,控件模闆中的控件,等之間的互相通路

原文: 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;       

舉了這兩個例子,就可以四兩撥動千斤了