繁体   English   中英

在Frame WPF MVVM内的页面1中的事件上导航到页面2

[英]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的引用的AddLotPageAddLotPageVm (取决于您要导航的位置):

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM