我有一个名为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
中输入的数据,应显示第2页,第3页或第4页。换句话说,AddLotFrame应该根据在AddLotPage(页1)中输入的数据导航到第2页,第3页或第4页。
所以我想从子CurrentPage
页面更新父AddLotFrame
的{{1}}属性。
我该如何实现这一目标?
答案 0 :(得分:1)
您可以通过引用AddLotPage
来注入AddLotPageVm
或CreateLotVm
(取决于您要导航的位置):
<强> 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;