日期:2014-05-17  浏览次数:20819 次

WPF的用户控件如何访问主窗体的函数和控件?
例如主窗体(frmMain)里有个函数:
public void setok()
{
    ...
}

在用户控件(usercontrol_Test)里怎么访问主窗体(frmMain)里定义的函数或者主窗体里的控件?
在winform里我记得可以这样去访问主窗体的函数:
var frm = this.ParentForm as frmMain;
frm.setok();

但在WPF里这样写不行,在WPF里要怎么才能访问呢?求高手!

------解决方案--------------------
WPF里面有一个Owner属性,你去看看
------解决方案--------------------
引用:
高手们呢??

真正的高手绝对不会做这种设计的。
控件不应该去关心什么主窗体不主窗体的,因为是窗体控制控件而不是反过来。
所以应该考虑的是这个方法放到窗体里是否是必须的,如果不是必须的,那么请放到更低的层次,以便别的模块调用。
如果必须放到窗体里,那么首先应该想到的方法就是依赖倒置,定义公用接口,窗体实现接口,而控件调用接口。