WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问

时间:2023-03-09 09:34:49
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;

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