作者e23882 (呆呆要不要买降有)
看板C_Sharp
标题[问题] WPF mainwindow usercontrol传值问题
时间Mon Feb 25 11:29:50 2019
我有一只程式他是一个视窗里面依条件去显示不同的usercontrol(以下简称uc)
如果是从主视窗送值到uc就很简单
UserControl uc = new UserControl();
uc.memberfunction();
.
.
.
我遇到的问题是
uc里面执行完某段程式後,要将执行的结果透过主视窗的某个function去设定UI
这个不知道该怎麽做
另外偷渡问个程式架构的问题
https://imgur.com/a/rrXvtfe
我上面的问题其实是要做一个统一显示讯息的功能
这个显示讯息的元件是写在主视窗里
所有嵌在视窗里的UserControl的相关讯息都可以透过这个元件显示在ui上
它其实就是一个queue,元件message property binding好queue之後
只要透过某个function一直enqueue就可以达到我要的效果
现在是图片中红框的DataGrid会依照不同的功能去切换usercontrol
switch (rule)
{
case "1":
usc = new UserControlHome();
GridMain.Children.Add(usc);
break;
case "2":
usc = new ucSSIS();
GridMain.Children.Add(usc);
break;
.
.
.
}
如果之後DataGrid改成一个TabControl
可以一次new很多个usercontrol加到tabitem再加到tabcontrol里
然後tabitem还可以dockable让usercontrol之间也可以做到传讯息
或是主视窗一次可以对好几个usercontrol传讯息的话
现在写的东西可能在那个时候就不适用了
一般来说这样要怎麽做比较好
我有想过写一个MessageCenter用一个执行绪专门来处理这些交换资料的问题
可这样感觉好麻烦,不知道一般来说这样的功能都是怎麽去实现的
再麻烦大家了
--
1F:推 staminafish:我国中都全校前10名09/05 19:33
2F:推 montes3388: 全校有10个人09/05 19:34
3F:推 twdonny: 其中5个缺席09/05 19:38
4F:推 montes3388: 4个资源斑09/05 19:39
5F:推 a110002211: 1个乡民09/05 19:56
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.153.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1551065393.A.296.html
6F:推 Litfal: 1-1. 在UC里面加属性让主视窗拿 02/25 12:54
7F:→ Litfal: 1-2.在UC里面加状态改变事件,通知主视窗 02/25 12:55
8F:→ Litfal: 1-3. UC和主视窗(部分)binding到同一个ViewModel 02/25 12:55
9F:→ Litfal: 第一部分选一个。第二部分要说到好,要打好多字我好懒XDDD 02/25 12:57
10F:推 anumis: 以 ItemTemplete 方式开发,整合成同样的资料格式,再使用 02/26 01:53
11F:→ anumis: SelectedItem 取得现在所切换的物件,如果你能改成继承同 02/26 01:53
12F:→ anumis: 样父结构,那这时就可以直接转型呼叫共同函式了 02/26 01:53