[英]Navigating to Page 2 on an event in Page 1 inside Frame WPF MVVM
我有一个名为CreateLot.xaml
的窗口,其中包含如下框架:
<Frame Name="AddLotFrame" Content="{Binding Path=CurrentPage,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Background="Transparent"
ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible"
MinHeight="175" MinWidth="175" ></Frame>
在视图模型CreateLotVm.cs
:
public CreateLotVm()
{
AddLotPage addLot = new AddLotPage();
AddLotPageVm vm = new AddLotPageVm(CurrentPage);
addLot.DataContext = vm;
CurrentPage = addLot;
}
我将AddLotPage
绑定到框架的CurrentPage
的位置。
在AddLotPage
,我有一个表单和一个按钮。 在按钮按下事件中,我正在执行一些验证和数据库事务。 现在,基于按钮按下事件在AddLotPage
输入的数据,应该显示Page 2,Page 3或Page 4。 换句话说,AddLotFrame应该基于在AddLotPage(页面1)中输入的数据导航到页面2,页面3或页面4。 所以我想从子AddLotPage
页面更新父AddLotFrame
CurrentPage
属性。 我该如何实现?
例如,您可以注入对CreateLotVm
的引用的AddLotPage
或AddLotPageVm
(取决于您要导航的位置):
AddLotPageVm.cs:
private readonly CreateLotVm _navigationVm;
public RelayCommand ButtonCommand;
public AddLotPageVm(CreateLotVm navigationVm)
{
_navigationVm = navigationVm;
ButtonCommand = new RelayCommand(ButtonMethod);
}
public void ButtonMethod(object x)
{
//...
_navigationVm.CurrentPage = new Page2();
}
CreateLotVm.cs:
AddLotPage addLot = new AddLotPage();
AddLotPageVm vm = new AddLotPageVm(this);//<-- injection
addLot.DataContext = vm;
currentPage = addLot;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.