【问题标题】:Windows 8 Store App navigation with binding?带有绑定的 Windows 8 应用商店应用导航?
【发布时间】:2014-04-08 08:08:47
【问题描述】:

我的第一个 C#/Xaml 体验是 Windows Phone 8,其中导航的工作方式如下:

NavigationService.Navigate(new Uri("/MyPage.xaml", UriKind.Relative));

这意味着我可以用我需要的任何内容替换字符串“/MyPage.xaml”并转到该页面。

Windows 应用商店应用程序是否可以实现类似的功能?

this.Frame.Navigate(typeof(MyPage), UriKind.Relative);

MyPage 在这里不是一个字符串,所以我不能在应用程序运行时简单地替换它。还有什么办法吗?

我正在做的是: 我使用一个 ListBox 从绑定的 viewModel 中获取数据。在SelectionChanged 事件触发后,我想存储应用程序应该导航到的目标。

【问题讨论】:

    标签: c# wpf windows-8 navigation


    【解决方案1】:

    如果你得到带有命名空间的字符串,你可以像下面这样使用它。

    this.Frame.Navigate(Type.GetType("Namespace.PageName"));
    

    【讨论】:

    • 非常感谢,这就是我要找的。现在它完全是动态绑定。如果我在 ViewModel 中添加一个新对象和一个新类,它将自动创建一个指向该视图的按钮 :)
    【解决方案2】:

    是的,您可以在选择更改时传递页面的 url 并加载相应的 dataContext

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        var title = NavigationContext.QueryString["title"];
        (DataContext as ImagePageViewModel).Load(title);
    }
    

    按照这个可以满足您要求的示例

    page-navigation-in-windows-phone-and-windows-8

    【讨论】:

    • 我想过使用这个传递的变量,但我想用它来实现应用程序的导航栏。这意味着我会将所有类/视图放在一个文件中,然后选择将在什么时候显示...这不是最好的方法=/另一种方法是中间的一个类,它采用这个变量并决定去。但是然后我可以在所有视图中创建一个开关盒..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多