我最近在WPF中编程很多,但我的View和ViewModel在这一点上并不是分开的.嗯,这是部分原因.我的所有绑定都与文本框中的文本,标签内容,数据网格中的列表,......相关,都是由常规属性完成的,其中包含NotifyPropertyChanged事件.
处理按钮点击或文本更改内容的所有事件都是通过链接事件来完成的.现在,我想开始使用命令并找到这篇文章:http://www.codeproject.com/Articles/126249/MVVM-Pattern-in-WPF-A-Simple-Tutorial-for-Absolute.它解释了如何设置MVVM,但我对它感到困惑RelayCommand.
它做了什么工作?它对我表单中的所有命令都可用吗?如果(a)某些文本框未填写,如何禁用该按钮?
编辑1:
对"我的表单中的所有命令都可用吗?"的一个很好的解释.在这里回答:https://stackoverflow.com/a/22286816/3357699
这是我到目前为止的代码:https://stackoverflow.com/a/22289358/3357699
我正在尝试创建一个类和方法,可以在任何窗口和页面上使用它来更改 MainWindow 窗口上显示的当前页面。
到目前为止我得到了:
class MainWindowNavigation : MainWindow
{
public MainWindow mainWindow;
public void ChangePage(Page page)
{
mainWindow.Content = page;
}
}
Run Code Online (Sandbox Code Playgroud)
主窗口本身:
public MainWindow()
{
InitializeComponent();
MainWindowNavigation mainWindow = new MainWindowNavigation();
mainWindow.ChangePage(new Pages.MainWindowPage());
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这最终导致了 System.StackOverflowException。
创建此内容的主要原因是我希望能够从当前显示在 mainWindow.Content 中的页面更改 mainWindow.Content。
我已经审查过 MVVM,但我认为不值得将它用于像这样的小型应用程序,因为我想要它做的就是在打开时显示欢迎页面,然后在侧面会有几个按钮。一旦按下, mainWindow.Content 正确地更改为用户可以输入登录详细信息的页面,然后按下登录页面上的按钮,我想在成功验证输入的登录详细信息后将 mainWindow.Content 更改为不同的页面。