资 源 简 介
翻译 maninwest@Codeforge 作者 Cornelius Henning@Codeproject
我学习 MVVM 时遇到一个意外问题,关闭对话框时不如在旧的 WPF 中简单, 尤其是当你想避免背后的代码时。在此示例中,所有代码都在视图的 ViewModel 类中。
使用代码
整个项目是个可下载的 zip 文件。该项目是在Visual Studio 2012 中进行的,针对 .NET 4.5 平台。如要查看演示,请解压缩文件并进行构建。运行时,会显示一个用户,具有一个包含一个按钮的主窗口。单击按钮会打开新的具有两个按钮的对话窗口。单击任何一个按钮会执行有限的代码,然后对话框会关闭。
请注意,为了提高可读性,代码已经少得不能再少了。处理运行时错误的意外手柄也减到最少。如果你要使用此代码,务必要确保最终代码稳健且可处理任何意外或其他错误。
此代码中无使用的约束条件。你可以使用全部或者部分。
实现的说明
对话框的关闭由附加的属性控制。属性设置为 true 时,对话框会关闭。.以下是注册附加事件的代码:
using System; using System.Windows; namespace MvvmDialogDemo.AttachedProperty
{ public static class CloseDialog
{ public static readonly DependencyProperty DialogResultProperty =
DependencyProperty.RegisterAttached("DialogResult", typeof(Boolean?), typeof(CloseDialog),new PropertyMetadata(DialogResultChanged)); private static void DialogResultChanged
(DependencyO