之前一直在寫Java,最近公司接了個c#專案,是用wpf實作的,我搭了一個MVVM的框架,并且集成了MaterialDesign。
現在我遇到的問題是如果當前存在多個視窗,我如果想在viewmodel中新建一個視窗,并控制除了新建的視窗外所有視窗的關閉,就只能通過創建viewmodel時傳遞當前的viewmodel實作,這樣的話代碼依賴性太強了,特別混亂,如果進行傳值的話也是如此。
請問有沒有什么辦法實作對視窗viewmodel和view進行統一管理的公共方法?
初入c#本人認識還淺,有什么說錯的地方還希望各位指正。
uj5u.com熱心網友回復:
大神們能不能給只條明路啊,搜了好多也找不到答案。uj5u.com熱心網友回復:
公共類呼叫
public class WindowHelper
{
public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached(
"DialogResult",typeof(bool?),typeof(WindowHelper),new PropertyMetadata(DialogResultChanged));
private static void DialogResultChanged(DependencyObject dependencyObject,DependencyPropertyChangedEventArgs e)
{
if (dependencyObject is Window window && e.NewValue != null)
{
window.DialogResult = e.NewValue as bool?;
}
}
}
前臺xaml 系結
WindowHelper.DialogResult="{Binding DialogResult, Mode=OneWay}"在viewmodel中新建一個DialogResult屬性, DialogResult=true;就是關閉,
uj5u.com熱心網友回復:
你還是做java吧,C#不適合你uj5u.com熱心網友回復:
寫個helper 把view和viewmodel都存進去然后隨你怎么折騰
uj5u.com熱心網友回復:
window???你憑啥要管window啊,你管了window依賴才強。
后面有人說,這個window要改,這個window不是我想要的,這個window要根據A+B+C去選擇。兄弟,你覺著這個依賴強不強。
實在想寫的話,請委托出去。讓外面的人折騰去,你別管。
uj5u.com熱心網友回復:
推薦vm和vm之間通過訊息中心來相互通信轉載請註明出處,本文鏈接:https://www.uj5u.com/net/144188.html
標籤:C#
