【发布时间】:2018-05-09 11:15:23
【问题描述】:
我在任何地方都没有找到这个。目前我正在制作一个 WPF 应用程序,但遇到了问题。我需要一页,但数据应该不同,具体取决于调用页面的按钮。如果不尝试坚持使用 MVVM,那会很容易。我已经有一个将所需数据传递给页面 cs 文件的按钮,但我不知道如何将这些数据传递给 ViewModel。
DetailedViewPage.xaml.cs:
namespace unnamed
{
public partial class DetailedViewPage : BasePage<DetailedViewViewModel>
{
public DetailedViewPage(string position)
{
InitializeComponent();
}
}
//I'm using similar method to create new View
private void CreateNewWindow()
{
var MainWindow = (MainWindow) Application.Current.MainWindow;
var MWViewModel = (WindowViewModel) MainWindow.DataContext;
MWViewModel.CurrentPage = new DetailedViewPage("top");
}
}
BasePage.cs:
public class BasePage<VM> : Page
where VM : BaseViewModel, new()
{
private VM mViewModel;
public VM ViewModel
{
get { return ViewModel; }
set
{
if (mViewModel == value)
return;
mViewModel = value;
this.DataContext = mViewModel;
}
}
public BasePage()
{
this.Resources = ((MainWindow)Application.Current.MainWindow).Resources;
this.ViewModel = new VM();
}
}
DetailedViewViewModel.cs:
namespace unnamed
{
public class DetailedViewViewModel : BaseViewModel
{
public string PossitionShown { get; set; }
public DetailedViewViewModel()
{
}
}
}
所以我的目标是从页面 cs 文件中获取位置变量到 ViewModel 并分配给PossitionShown。
【问题讨论】:
-
您如何创建新页面?请提供代码。
-
基本上就是这样一行代码
((WindowViewModel)((MainWindow)Application.Current.MainWindow).DataContext).CurrentPage = new DetailedViewPage("top");