【发布时间】:2012-03-04 11:33:18
【问题描述】:
MVVM 新手。我没有使用任何 MVVM 框架(WAF/MVVM Light)。我使用 Josh Smith 的 relayCommand 类。
有两种形式,Win_Login(btnCancel 和 btnNext),另一种是带有组合框和两个按钮(btnBack,btnNext)的选择表单 - 用户可以在其中选择 GOOG、MSFT 等股票代码。
我为登录和选择表单编写了View和ViewModel的基本骨架。
我想要实现的是成功登录,关闭登录视图并打开选择表单,然后单击 (btnBack) 应该再次显示 loginForm。Windows 是 单身。
我将视图的 dataContext 设置为
<Window
x:Class="Ticker.Win_Login"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Ticker"
Title="Ticker-Login" Height="312" Width="394" WindowStartupLocation="CenterScreen" Background="#F9FBF4" >
<Window.DataContext>
<local:Win_LoginViewModel/>
</Window.DataContext>
<Grid></Grid
在 Win_LoginViewModel 中
private void LoginExecute()
{
if (!CanLoginExecute()) return;
try
{
//how I'll call close the current view
//how I'll call selectTicker view
}
catch (Exception)
{
throw;
}
}
在 Win_SelectTickerViewModel 中
private Boolean CanBackExecute()
{
return true;
}
private void BackExecute()
{
if (!CanCancelExecute())
{
return;
}
//how I'll implement back here.
}
如果有人可以为给定场景提供一些简单的解决方案(pbbly 提供一些示例代码),我将不胜感激。
【问题讨论】:
-
Window 类在这里不好。我假设您可以创建两个用户控件(1 个用户控件用于 1 个视图模型)并希望在它们之间切换。
标签: wpf mvvm mvvm-foundation