3 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
當(dāng) Wi-Fi 開始連接時(shí),使用:
MyWindow popup = new MyWindow(); popup.ShowDialog();
MyWindow
包含信息的小表格在哪里。
連接 Wi-Fi 后,使用:
popup.Close();
ShowDialog()
阻止用戶與父表單交互。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
您應(yīng)該在后臺(tái)線程上執(zhí)行需要兩秒鐘才能完成的長時(shí)間運(yùn)行的任務(wù),并在調(diào)度程序線程上顯示和關(guān)閉窗口,例如:
Window window = new Window()
{
WindowStyle = WindowStyle.None,
Content = new TextBlock { Text = "working..." }
};
Task.Run(() =>
{
//do something that might take a while here...
System.Threading.Thread.Sleep(2000);
}).ContinueWith(task => window.Close(),
CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
window.ShowDialog(); //Call .Show() instead if you don't want to block here until the task has finished.

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)于這類事情,我使用一個(gè)繁忙的“throbber”或“spinner”,它顯示在窗口頂部的面板中。這只是用動(dòng)畫來顯示正在發(fā)生的事情。我將其可見性綁定到窗口視圖模型中的“IsBusy”屬性。在繼承自的基礎(chǔ)視圖模型中,因?yàn)檫@是一個(gè)常見的要求。
當(dāng)我將 Isbusy 設(shè)置為 true 時(shí),微調(diào)器就會(huì)出現(xiàn)并呈現(xiàn)動(dòng)畫。
當(dāng)我將其設(shè)置為 False 時(shí),微調(diào)器就會(huì)消失。
我還有一個(gè)顯示消息的區(qū)域。這些是動(dòng)畫的,所以它們會(huì)出現(xiàn),然后在幾秒鐘后淡出。
Throbber 是要查看的用戶控件。
這通常位于用戶可以編輯內(nèi)容的面板中 - 因此他們無法在更新數(shù)據(jù)時(shí)更改數(shù)據(jù)。
我還在命令的 CanExecute 謂詞中使用 IsBusy 來在處理完成時(shí)禁用按鈕等。因?yàn)橥ㄖ灰欢ㄊ羌磿r(shí)的,所以我檢查所有命令并在 IsBusy 為 true 時(shí)退出。命令在運(yùn)行時(shí)將 IsBusy 設(shè)置為 true。
為了完整起見,可能與貝拉的問題沒有直接關(guān)系。
在某些情況下,我只想向用戶顯示處理正在進(jìn)行,但允許他們繼續(xù)工作。這種情況在我正在開發(fā)的游戲的地圖和場(chǎng)景編輯器中經(jīng)常發(fā)生。例如,當(dāng)您將鼠標(biāo)懸停在指揮官上時(shí),指揮官與其下屬之間會(huì)發(fā)生 Spatial A* 最佳路線計(jì)算,大約需要 1 到 12 秒的時(shí)間。我不想阻止用戶,但我想表明在這種情況下正在發(fā)生一些事情。
我有第二種機(jī)制,帶有一個(gè)侵入性較小的顫動(dòng)器,用于此目的。它出現(xiàn)在我的用戶通知消息旁邊。
- 3 回答
- 0 關(guān)注
- 176 瀏覽
添加回答
舉報(bào)