作者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用一個執行緒專門來處理這些交換資料的問題
可這樣感覺好麻煩,不知道一般來說這樣的功能都是怎麼去實現的
再麻煩大家了
--
推 staminafish:我國中都全校前10名09/05 19:33
推 montes3388: 全校有10個人09/05 19:34
推 twdonny: 其中5個缺席09/05 19:38
推 montes3388: 4個資源斑09/05 19:39
推 a110002211: 1個鄉民09/05 19:56
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.153.217
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1551065393.A.296.html
推 Litfal: 1-1. 在UC裡面加屬性讓主視窗拿 02/25 12:54
→ Litfal: 1-2.在UC裡面加狀態改變事件,通知主視窗 02/25 12:55
→ Litfal: 1-3. UC和主視窗(部分)binding到同一個ViewModel 02/25 12:55
→ Litfal: 第一部分選一個。第二部分要說到好,要打好多字我好懶XDDD 02/25 12:57
推 anumis: 以 ItemTemplete 方式開發,整合成同樣的資料格式,再使用 02/26 01:53
→ anumis: SelectedItem 取得現在所切換的物件,如果你能改成繼承同 02/26 01:53
→ anumis: 樣父結構,那這時就可以直接轉型呼叫共同函式了 02/26 01:53