c# – 在ViewModel中处理对话框的最佳方法是什么?

c# – 在ViewModel中处理对话框的最佳方法是什么?,第1张

概述跟进IDialogService方法: 那么System.Windows.MessageBoxResult枚举呢?更好的方法是将其保留在接口之外并仅将其纳入实现中吗? 我为System.Windows.MessageBoxResult枚举选择的方法: 我在IDialogInterface旁边添加了一个enum,它包含Yes,NO,Ok,Cancel: namespace Foo.Bar.Dialo 跟进IDialogService方法:

那么System.Windows.MessageBoxResult枚举呢?更好的方法是将其保留在接口之外并仅将其纳入实现中吗?

我为System.windows.MessageBoxResult枚举选择的方法:

我在IDialogInterface旁边添加了一个enum,它包含Yes,NO,Ok,Cancel:

namespace Foo.bar.Dialogs{    public enum DialogResult { Ok,Yes,No,Cancel }    public interface IDialogService    {        voID ShowErrorBox(string error_message);        DialogResult ShowQuestionBox(string question_message);        DialogResult ShowQuestionBox(string question_message,string caption);        DialogResult ShowQuestionBox(string question_message,string caption,bool allow_cancel);        DialogResult ShowQuestionBox(string question_message,bool allow_cancel,bool show_as_error);        voID ShowWarningBox(string message,string caption = "");        voID ShowinformationBox(string message);        voID ShowinformationBox(string message,string caption);    }}

初步问题:

我正在努力将所有命令从我的.asmx.cs文件移动到某个应用程序主窗口的viewmodel.

现在我必须弄清楚如何处理要求用户确认的命令.

现在我只是在我的viewmodel中填入必要的类型来直接启动我的对话框.我很确定这不是最好或最干净的方法.

我发现这个article有一个有趣和清洁的方法.它使用IDialogService接口:

public interface IDialogService{    int WIDth { get; set; }    int Height { get; set; }    voID Show(string Title,string message,Action<DialogResult> onClosedCallback);}

我还发现这个article似乎更好,因为它在尝试使用之前检查IDialogInterface是否为null:

private voID PerformAddNewCustomer() {     CustomerList.Add(new Customer { name = "name" + i });     i++;     if (dialogService != null)     {         dialogService.Show("Customed added");     } }

这是将对话框与viewmodel分开的最佳方法,还是有更好的方法?

解决方法 我会说你发布的链接中的方法是一个很好的,也非常普遍(来源:我在网上查看代码;)).它使用起来相当简单,它通过在单元测试中使用虚拟服务使对话框可测试,并简化了重构对话框的过程.

就个人而言,我的DialogService方法签名采用了Tuple< string,Action>的列表.然后我根据它创建对话窗口的按钮.它允许viewmodel从对话框窗口请求一些特殊功能,而不必每次我的需要超过Ok或YesNo消息框时为我的服务添加新方法(虽然我自己有这些方法作为方法,以方便使用).

所以这是一个坚实的方法,在这一点上,我认为你不会发现更好的东西,只有你可能更喜欢的东西.

总结

以上是内存溢出为你收集整理的c# – 在ViewModel中处理对话框的最佳方法是什么?全部内容,希望文章能够帮你解决c# – 在ViewModel中处理对话框的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存