如何通过点击页面中已有的按钮导航到另一个页面?

时间:2017-07-15 00:06:43

标签: c# wpf xaml mvvm

  • 我的 Window 包含框架
  • 我有两页, Page1 Page2 ,并且......在其中,我 有一个按钮
  • 加载窗口时,框架会导航至Page1。

我希望框架能够通过点击 Page1 中的按钮导航到 Page2

我尝试使用MVVM:

这就是Window 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>

Window ViewModel:

public class NavigationViewModel
{
    private static object page;
    public static object Page { get { return page; } set { page = value; } }

    public static void ChangePage(object objpage){Page = objpage;}

    public NavigationViewModel()
    {
        ChangePage(new Page1());
    }
}

Page1 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>

Page1 ViewModel:

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());
    }
}
  

当我编译时,框架导航到Page1但是点击了   按钮不会更改页面。使用调试红圈工具   它似乎工作,财产&#34; Page&#34;在NavigationViewModel中   从Page1更改为Page2但是...结果是实际上没有   在UI中发生。

0 个答案:

没有答案