如何使用MVVM Light为WPF显示对话框?

时间:2016-05-26 21:13:19

标签: c# mvvm mvvm-light

我需要你的帮助。我已经花了很多时间研究如何使用MVVM Light for WPF显示对话框。但是,我运气不好。

我读到了有关如何实现/使用DialogService:https://marcominerva.wordpress.com/2014/10/14/dialogservice-in-mvvm-light-v5/的内容,但却发现它没有DialogService。我必须为WPF实现DialogService。

有人可以帮助我实现如何为WPF实现DialogService吗?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是一个完美的解决方案,但我创建了一个显示对话框的服务。

public interface IDialogService {
    void ShowError(Exception Error, string Title);
    void ShowError(string Message, string Title);
    void ShowInfo(string Message, string Title);
    void ShowMessage(string Message, string Title);
    bool ShowQuestion(string Message, string Title);
    void ShowWarning(string Message, string Title);
}

public class DialogService : IDialogService {
    public void ShowError(Exception Error, string Title) {
        MessageBox.Show(Error.ToString(), Title, MessageBoxButton.OK, MessageBoxImage.Error);
    }

    public void ShowError(string Message, string Title) {
        MessageBox.Show(Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
    }

    public void ShowInfo(string Message, string Title) {
        MessageBox.Show(Message, Title, MessageBoxButton.OK, MessageBoxImage.Information);
    }

    public void ShowMessage(string Message, string Title) {
        MessageBox.Show(Message, Title, MessageBoxButton.OK);
    }

    public bool ShowQuestion(string Message, string Title) {
        return MessageBox.Show(Message, Title, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes;
    }

    public void ShowWarning(string Message, string Title) {
        MessageBox.Show(Message, Title, MessageBoxButton.OK, MessageBoxImage.Warning);
    }
}

这对我很好。如果需要在平台上进行更改,则只需修改DialogService类。