相关疑难解决方法(0)

MVVM模板的好例子

我目前正在使用Microsoft MVVM模板,并发现缺乏详细的示例令人沮丧.包含的ContactBook示例显示了非常少的命令处理,我发现的唯一其他示例来自MSDN杂志文章,其中概念类似但使用稍微不同的方法,但仍然缺乏任何复杂性.是否有任何体面的MVVM示例至少显示基本的CRUD操作和对话/内容切换?


每个人的建议都非常有用,我将开始编制一份好的资源清单

框架/模板

有用的文章

截屏

其他图书馆

wpf mvvm

139
推荐指数
2
解决办法
6万
查看次数

在WPF MVVM中打开对话框

我有一个应用程序,需要从用户输入一些信息的按钮打开一个对话框.

目前我这样做(工作正常)

  • 单击按钮会在ViewModel中生成一个命令.
  • ViewModel引发Controller监听的事件.
  • Controller计算出新窗口的细节(即View,ViewModel和model)并打开它(ShowDialog)
  • 当窗口关闭时,Controller将结果添加到eventargs并返回ViewModel
  • ViewModel将信息传递给Model.

有很多步骤,但它们都有意义,并没有太多的打字.

代码看起来像这样(窗口要求输入用户名)

视图模型:

AskUserNameCommand = DelegateCommand(AskUserNameExecute);
...

public event EventHandler<AskUserEventArgs> AskUserName;

void AskUserNameExecute(object arg) {
    var e = new AskUserNameEventArgs();
    AskUserName(this, e);
    mModel.SetUserName(e.UserName);
}
Run Code Online (Sandbox Code Playgroud)

控制器:

mViewModel.AskUserName += (sender,e) => {
    var view = container.Resolve<IAskUserNameView>();
    var model = container.Resolve<IAskUserNameModel>();
    var viewmodel = container.Resolve<IAskUserNameViewModel>(view, model);
    if (dlg.ShowDialog() ?? false)
        e.UserName = model.UserName;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是水平通信如何在MVVM模式中工作.不知何故,让控制器参与模型之间的数据传输似乎是错误的.

我已经查看了中介模式,让模型直接进行通信.不喜欢这个想法,因为它使模型取决于GUI的实现细节.(即如果用文本框替换对话框,模型需要更改)

wpf dialog mvvm

13
推荐指数
2
解决办法
3万
查看次数

桌面DLL中的Prism PopupChildWindowAction缺失

我正在尝试在WPF Prism Desktop应用程序中实现模式对话框.

从Prism指导我可以看到正确的方法应该是使用Interaction:

<i:Interaction.Triggers>
    <prism:InteractionRequestTrigger 
            SourceObject="{Binding ConfirmCancelInteractionRequest}">

        <prism:PopupChildWindowAction
                  ContentTemplate="{StaticResource ConfirmWindowTemplate}"/>

    </prism:InteractionRequestTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

但是PopupChildWindowAction在桌面的Microsoft.Practices.Prism.Interactivity.DLL库中没有,只有Silverlight?

我可以谷歌在WPF(Prism)的Modal对话框的许多不同的实现,但只是想知道为什么这个功能从Prism桌面DLL丢失,并在Silverlight DLL中可用?我可以使用交互服务,但建议使用交互请求作为MVVM应用程序的更合适的方法.

c# wpf prism mvvm prism-4

3
推荐指数
1
解决办法
2495
查看次数

标签 统计

mvvm ×3

wpf ×3

c# ×1

dialog ×1

prism ×1

prism-4 ×1