Dot-Net
使用 MVVM 處理 WPF 中的對話框
在 WPF 的 MVVM 模式中,處理對話框是更複雜的操作之一。由於您的視圖模型對視圖一無所知,因此對話通信可能很有趣。我可以公開一個
ICommand,當視圖呼叫它時,會出現一個對話框。有誰知道處理對話結果的好方法?我說的是 Windows 對話框,例如
MessageBox.我們這樣做的一種方法是在視圖模型上設置一個事件,當需要對話框時視圖將訂閱該事件。
public event EventHandler<MyDeleteArgs> RequiresDeleteDialog;這沒關係,但這意味著視圖需要程式碼,這是我想遠離的。
我建議放棄 1990 年代的模式對話框,而是將控制項實現為覆蓋(畫布+絕對定位),其可見性與 VM 中的布爾值相關聯。更接近 ajax 類型的控制項。
這非常有用:
<BooleanToVisibilityConverter x:Key="booltoVis" />如:
<my:ErrorControl Visibility="{Binding Path=ThereWasAnError, Mode=TwoWay, Converter={StaticResource booltoVis}, UpdateSourceTrigger=PropertyChanged}"/>這是我如何將一個實現為使用者控制項的方法。點擊’x’會在usercontrol的程式碼後面的一行程式碼中關閉控制項。(因為我的視圖在 .exe 中,視圖模型在 dll 中,所以我對操縱 UI 的程式碼並不感到難過。)
