根据itemview点击的项目导航到页面

时间:2013-02-12 18:56:26

标签: c# xaml windows-store-apps

我有一个绑定到gridview控件的简单列表,在itemview的click事件中我想导航到该页面。

我的课看起来像;

public class GetMenu
    {
        public string titleName { get; set; }
        public string imagePath { get; set; }
        public string pagePath { get; set; }
    }

带有列表的数据示例;

new GetMenu(){titleName = "Services", imagePath = "Bouquets.xaml", pagePath="Services.xaml"}

对于点击甚至有以下内容;

void ItemView_ItemClick(object sender, ItemClickEventArgs e)
    {
    }

我相信我需要从e中提取点击事件数据,我有点不确定如何做到这一点。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,即你想要“点击”项目,那么它应该相当容易:

var getMenu = (GetMenu)e.ClickedItem;

现在你有了这个项目,你可以使用里面的属性作为导航参数。

这是你的想法吗?

[编辑]

导航本身也很简单。如果您处于代码隐藏状态,则必须:

Frame.Navigate(typeof(YourViewForTheItem), parameters);

e.g。

Frame.Navigate(typeof(ItemDetailsView), getMenu);

parametersobject,因此您必须在目标视图中的OnNavigatedTo中进行适当的投射。

如果你正在使用任何类型的MVVM框架,那么也有服务,例如Caliburn.Micro有INavigationService

如果您事先知道类型,那当然就是这样。

如果你想从你拥有的字符串创建'type',你将不得不使用反射:

var viewType = Type.GetType("YourStoreApp.Views."+getMenu.pagePath.Substring(0, getMenu.pagePath.LastIndexOf("."));

假设pagePath不为空。

类型字符串必须是完全限定名,即完整程序集名称和类型(不带扩展名),例如“YourStoreApp.Views.Services”。文件名必须完全镜像类型名称才能使其工作。

现在你可以:

Frame.Navigate(viewType);