永发信息网

WPF 怎么访问主窗体里面的控件

答案:1  悬赏:0  手机版
解决时间 2021-04-06 15:52
  • 提问者网友:wodetian
  • 2021-04-06 03:05
WPF 怎么访问主窗体里面的控件
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-04-06 03:24
新窗体和主窗体不是父子关系,当然找不到。
这两种窗体间的交互我知道的有几种方法
1:设置子窗体的拥有者为主窗体
2:使用一个全局变量,并在变量改变通知主窗体
3:使用Prism的aggregaterg事件,子窗口发布聚合事件,主窗体接收追问具体代码呢,不会写追答1:例如 MainWindow是主窗体,SubWindow是子窗体

在主窗体中弹出新窗体时

SubWindow sub=new SubWindow();
sub.Owner=this

sub.Show();
这时你在subwindow就可以查找到MainWindow
Window w = this.Owner; 这里的w就是你的主窗体了
DataGrid grid = w.FindName("dg") as DataGrid; 这就是主窗体上的Datagrid控件了,这样你想怎么样就怎么样了
2:有点麻烦就不说了
3:使用前先引用 Microsoft.Practices.Prism.Events;
第一步:在基础模块中定义事件
public class SendTextEvent
: CompositePresentationEvent { }
这里的string只是表示方便,可以是任何类
第二步,在子窗体中发布事件
private IEventAggregator eventAggregator = ServiceLocator.Current.GetInstance(); 这是字段
eventAggregator.GetEvent().Publish(SendMessage);这是你要传递的数据
第三步,订阅事件
IEventAggregator eventAggregator= ServiceLocator.Current.GetInstance();

SubscriptionToken token =
eventAggregator.GetEvent().Subscribe(GetText);;
private void GetText(string obj)

{

//在这里处理你的数据

}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯