blu*_*bit 7 wpf modal-dialog mvvm
我已将MVVM错误消息实现为消息对话框,该对话框通过中介类订阅错误消息,以便其他视图模型可以在发生任何错误时通知它.
发生错误时,我将viewmodel中的visibility属性设置为Visible,以显示错误窗口.这全部绑定在viewmodel的Error窗口中.
但是,这个窗口不是模态的!我需要将它显示为一个对话框,而不仅仅是将可见性设置为true - 即使我必须扩展窗口的功能,我还能做任何类型的绑定吗?如果我能避免它,我宁愿不打破MVVM.
谢谢!
View/ViewModel 的拆分旨在将外观与功能分开。我坚信 Window 是功能性和外观合二为一的。例如,如果在您的 ErrorMessageViewModel 中,您有以下代码在出现错误时执行:
class WindowViewModel : Window
{
}
.
.
.
WindowViewModel newDialog = new WindowViewModel();
newDialog.Content = myErrorListViewModel;
newDialog.Parent = mainWindowViewModel;
newDialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
因此,对话框的内容是错误列表的 ViewModel。将您的 View 定义为一个数据模板,该模板会自动将其自身应用到错误列表 ViewModel。
这看起来不像MVVM吗?
事实上,Window 类是您在屏幕上看到的 Window 的 ViewModel。通过更改 Window 对象的属性,它会影响“视图”,就像 WindowView 的属性绑定到 WindowViewModel 一样。唯一缺少的是使用 WPF“重新设计”窗口的能力,无论您多么努力地尝试实现它,您都无法做到这一点。用户可以通过修改桌面主题来重新设计窗口的样式,但您无法控制它。您能做的最好的事情就是关闭镶边和/或使其全屏显示。
归档时间: |
|
查看次数: |
7360 次 |
最近记录: |