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;

举了这两个例子,就可以四两拨动千斤了

猜你喜欢

转载自www.cnblogs.com/lonelyxmas/p/9143775.html
今日推荐