我有一个绑定到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中提取点击事件数据,我有点不确定如何做到这一点。
答案 0 :(得分:1)
如果我理解你的问题,即你想要“点击”项目,那么它应该相当容易:
var getMenu = (GetMenu)e.ClickedItem;
现在你有了这个项目,你可以使用里面的属性作为导航参数。
这是你的想法吗?
[编辑]
导航本身也很简单。如果您处于代码隐藏状态,则必须:
Frame.Navigate(typeof(YourViewForTheItem), parameters);
e.g。
Frame.Navigate(typeof(ItemDetailsView), getMenu);
parameters
是object
,因此您必须在目标视图中的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);