WPF的用户控件怎么访问主窗体的控件求高手

 我来答
潮之玉9X
2013-11-10 · TA获得超过620个赞
知道答主
回答量:125
采纳率:100%
帮助的人:60.3万
展开全部
我有一个用户控件,用户控件被动态加载到主窗体(frm_Manage)里。我想当用户控件被点击 后就清空主窗体里Grid 控件里的所有子控件。 private void lbl_MenuName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ //frm_Manage 为主窗体,Grid_MenuChildren 为主窗体的一个控件 var frm = (this.Parent as frm_Manage); frm.Grid_MenuChildren.Children.Clear();} 上面这样写的话会报错:frm 为null。 ------解决方案--------------------------------------------------------使用事件。 主窗口响应事件,把值传给控件。 ------解决方案-------------------------------------------------------- 呃,你把UserControl 放MainWindow 里不就结了。 WPF 的话更建议用数据驱动的思想设计程序。 ------解决方案-------------------------------------------------------- 响应事件的方法比较简单。 用户控件定义好了,在主窗体里完全可以把用户控件当作一个按钮来用。 // #用户控件// 定义 public event EventHandler click; // 被点击时,传递点击事件给外部 if (null != click) click(null, null);// #主窗体 // 用户控件的点击事件 userControl.click += (us, ue) = { MessageBox.Show( 用户控件被点击 ); }; ------解决方案-------------------------------------------------------- 实在不行你就给usercontrol 写个SetParent 的方法 初始化的时候调用下 把父窗口传递进 去 然后用就是了这样基本上可以解决你的问题 但是不是推荐的做法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式