之前一直在写Java,最近公司接了个c#项目,是用wpf实现的,我搭了一个MVVM的框架,并且集成了MaterialDesign。
现在我遇到的问题是如果当前存在多个窗口,我如果想在viewmodel中新建一个窗口,并控制除了新建的窗口外所有窗口的关闭,就只能通过创建viewmodel时传递当前的viewmodel实现,这样的话代码依赖性太强了,特别混乱,如果进行传值的话也是如此。 请问有没有什么办法实现对窗口viewmodel和view进行统一管理的公共方法? 初入c#本人认识还浅,有什么说错的地方还希望各位指正。
现在我遇到的问题是如果当前存在多个窗口,我如果想在viewmodel中新建一个窗口,并控制除了新建的窗口外所有窗口的关闭,就只能通过创建viewmodel时传递当前的viewmodel实现,这样的话代码依赖性太强了,特别混乱,如果进行传值的话也是如此。 请问有没有什么办法实现对窗口viewmodel和view进行统一管理的公共方法? 初入c#本人认识还浅,有什么说错的地方还希望各位指正。
{
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;就是关闭,
然后随你怎么折腾