該代碼庫是積極維護但沒有積極開發的。帶有新功能的拉請求將有很小的合併機會。在許多方面,該代碼庫是“完成的”。
請隨時使用該代碼,但請不要希望它比目前更有願望。
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的重要計劃,以支持您的產品免費許可開源社區。
