C# Mahapp ShowMessageAsync MvvM
我用MVVM模式创建了最简单的WPF项目。如何从我的viewModel调用C# Mahapp ShowMessageAsync MvvM,c#,wpf,mvvm,mahapps.metro,C#,Wpf,Mvvm,Mahapps.metro,我用MVVM模式创建了最简单的WPF项目。如何从我的viewModel调用ShowMessageAsync if (DisciplineText!="") { Disciplines.Add(new Discipline(){ChairID = SelectedChair.ChairID,SemesterID = SelectedSemester.SemesterID,Discipline1 = DisciplineText}); Context.SaveChanges(
ShowMessageAsync
if (DisciplineText!="")
{
Disciplines.Add(new Discipline(){ChairID = SelectedChair.ChairID,SemesterID = SelectedSemester.SemesterID,Discipline1 = DisciplineText});
Context.SaveChanges();
}
else
{
// ShowMessageAsync????????
}
您需要使用:
using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;
我希望它能有所帮助:)自从这个问题最初是通过它所称的
对话协调器提出以来,已经有了一种处理这些问题的机制。作者对如何使用它进行了描述;如果消失,主要步骤如下:
将以下内容添加到视图的xaml中:
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
Dialog:DialogParticipation.Register="{Binding}"
以与应用程序相关的任何方式将对话框协调器注入视图模型:
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel(DialogCoordinator.Instance);
}
开始显示一些对话框:
public MainWindowViewModel(IDialogCoordinator dialogCoordinator)
{
this.dialogCoordinator = dialogCoordinator;
}
private IDialogCoordinator dialogCoordinator;
private void ShowDialog()
{
dialogCoordinator.ShowMessageAsync(this, "Title of dialog", "Message in dialog");
}
不过,您已经在视图模型中添加了对窗口的依赖关系。@Cedric是对的——只需在主窗口中设置消息服务。。。然后可以从viewmodel向其发送消息。当我将您的最后一行更改为wait metroWindow.ShowMessageAsync(“Title”,“Message”)时,viewmodel不应该关心Application.Current.MainWindow
代码>(调用对象而不是类)对我有效。
public MainWindowViewModel(IDialogCoordinator dialogCoordinator)
{
this.dialogCoordinator = dialogCoordinator;
}
private IDialogCoordinator dialogCoordinator;
private void ShowDialog()
{
dialogCoordinator.ShowMessageAsync(this, "Title of dialog", "Message in dialog");
}