读书人

WPF的用户控件怎么访问主窗体的控件?

发布时间: 2013-01-23 10:44:50 作者: rapoo

WPF的用户控件如何访问主窗体的控件?求高手!
我有一个用户控件,用户控件被动态加载到主窗体(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的方法 初始化的时候调用下 把父窗口传递进去 然后用就是了
这样基本上可以解决你的问题 但是不是推荐的做法

读书人网 >C#

热点推荐