C# 如何通过单击';它已经在一页里面了? 我有一个包含框架的窗口 我有两页,Page1和Page2,还有。。。在他们里面,我 有一个按钮 加载窗口时,框架将导航到第1页
我希望通过单击Page1中的按钮,框架导航到Page2C# 如何通过单击';它已经在一页里面了? 我有一个包含框架的窗口 我有两页,Page1和Page2,还有。。。在他们里面,我 有一个按钮 加载窗口时,框架将导航到第1页,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我希望通过单击Page1中的按钮,框架导航到Page2 我尝试使用MVVM: 这是XAML的窗口 <Window x:Class="MVVM_Course.Navigation"> <Window.DataContext> <viewmodel:NavigationViewModel/> </Window.DataContext> <Grid> <Frame x:Name=
我尝试使用MVVM: 这是XAML的窗口
<Window x:Class="MVVM_Course.Navigation">
<Window.DataContext>
<viewmodel:NavigationViewModel/>
</Window.DataContext>
<Grid>
<Frame x:Name="frame" Content="{Binding Page, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
页面1 XAML:
<Page x:Class="MVVM_Course.Page1">
<Page.DataContext>
<vm:Page1ViewModel/>
</Page.DataContext>
<Grid>
<Button x:Name="btnGoTo2" FontSize="50" Command="{Binding BtnPage2Command}" Content="Go to Page 2"/>
</Grid>
</Page>
编译时,框架导航到第1页,但单击
按钮不会更改页面。使用调试红圈工具
NavigationViewModel中的属性“页面”似乎正在工作
从第1页更改为第2页,但。。。结果是实际上什么都没有
在UI中发生
请看:@adPartage谢谢,在您发送的链接中,我发现使用NavigationService可以在不参考框架的情况下进行导航,并且可以正常工作。现在唯一的问题是我无法从ViewModel类访问导航服务。解决这个问题的一个方法是将导航服务传递给ViewModel构造函数(从视图';的代码隐藏-您现在将在其中初始化和设置DataContext)。
<Page x:Class="MVVM_Course.Page1">
<Page.DataContext>
<vm:Page1ViewModel/>
</Page.DataContext>
<Grid>
<Button x:Name="btnGoTo2" FontSize="50" Command="{Binding BtnPage2Command}" Content="Go to Page 2"/>
</Grid>
</Page>
class Page1ViewModel
{
private ICommand btnPage2Command;
public ICommand BtnPage2Command { get { return btnPage2Command; } set { btnPage2Command = value; } }
public Page1ViewModel()
{
BtnPage2Command = new RelayCommand(GoToPage2);
}
private void GoToPage2(object obj)
{
NavigationViewModel.ChangePage(new Page2());
}
}