该代码库是积极维护但没有积极开发的。带有新功能的拉请求将有很小的合并机会。在许多方面,该代码库是“完成的”。
请随时使用该代码,但请不要希望它比目前更有愿望。
MVVM对话框是一个库,简化了在WPF中使用MVVM(Windows演示框架)中使用MVVM时从视图模型打开对话框的概念。它使开发人员能够以相同的方式为查看模型编写单元测试。
该库支持以下对话框:
要打开模态窗口,请使用附带的属性DialogServiceViews.IsRegistered装饰视图:
< UserControl
x : Class = " DemoApplication.Features.Dialog.Modal.Views.ModalDialogTabContent "
xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns : x = " http://schemas.microsoft.com/winfx/2006/xaml "
xmlns : md = " https://github.com/fantasticfiasco/mvvm-dialogs "
md:DialogServiceViews.IsRegistered= " True " >
...
</ UserControl >在视图注册的视图中,视图模型现在能够使用接口IDialogService打开对话框:
public class ModalDialogTabContentViewModel : INotifyPropertyChanged
{
private readonly IDialogService dialogService ;
public ModalDialogTabContentViewModel ( IDialogService dialogService )
{
this . dialogService = dialogService ;
}
.. .
private void ShowDialog ( )
{
var dialogViewModel = new AddTextDialogViewModel ( ) ;
bool ? success = dialogService . ShowDialog ( this , dialogViewModel ) ;
if ( success == true )
{
Texts . Add ( dialogViewModel . Text ) ;
}
}
} WPF中不从Window继承的对话框称为自定义对话框。支持这些自定义对话框,但是为了使DialogService知道如何与它们进行交互,您将必须实现IWindow接口。
默认情况下,MVVM对话框在要求时打开标准Windows消息框或打开文件对话框。但是,可以通过为DialogService提供自己的IFrameworkDialogFactory实现来改变这一点。
有关MVVM对话框和扩展样本的概念的更多信息,请参阅Wiki。
为了使我们所有的好处,我们的目标是与现有的MVVM框架一起发挥作用。创建新应用程序可能令人生畏。必须做出许多决定,而某些错误比其他错误更难纠正。为了帮助您在途中使用当今存在的一些流行的MVVM框架创建了一个示例应用程序,向您展示如何将MVVM对话框集成到该框架中。
当前,使用以下框架实现了示例应用程序。
如果您的特定框架不在列表中,请创建一个新的拉请请求,并告诉我们。
世界上充满了雪花,所有应用在某种程度上都是独一无二的。 MVVM对话框没有声称解决有关对话的所有问题,但对于大多数应用程序来说是一个绝妙的解决方案。其余的,与公共路径偏离的应用程序可能需要对MVVM对话框的行为进行特定更改。对于那些有MVVM对话框的贡献。一个具有由开源社区开发的功能和功能的存储库,可以解决非常具体的需求。
如果由于某种原因出于某种原因不适合您的应用程序,请在MVVM对话框中提出问题,我们将看到我们可以做什么。这些功能始终由社区实施,但是由MVVM对话框的维护者所塑造。
如果要在项目中包含MVVM对话框,则可以直接从Nuget安装它。
要安装MVVM对话框,请在软件包管理器控制台中运行以下命令:
PM > Install-Package MvvmDialogsMVVM对话开始是一篇关于Codeproject的文章,其首次修订于2009年5月发布。当时MVVM仍然是新鲜和新鲜的,现在尚未发布的MVVM Light尚未发布。实际上,当时通常不存在任何MVVM库。 MVVM对话框是出于与视图模型中的对话框合作的必要性而产生的,这一事实是,尽管MVVM是一种流行的模式,但实施它的支持是相当有限的。
因此,首次出版物是十多年前。给这个想法。一个开源项目,十年后仍维护,并且与.NET的发行版非常相关。将所有您声称开源代码的人都带走!
MVVM对话框与其他很棒的MVVM库在Awesome .Net!上列出了足够的声誉。
感谢Jetbrains的重要计划,以支持您的产品免费许可开源社区。
