1

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

我的课看起来像;

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 中提取点击事件数据,我有点不确定如何做到这一点。

4

1 回答 1

1

如果我正确理解您的问题,即您想获得“点击”项目,那么它应该相当容易:

var getMenu = (GetMenu)e.ClickedItem;

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

你是这么想的吗?

[编辑]

导航本身也相当简单。如果您在代码隐藏中,则必须:

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

例如

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

parameters是一个object,所以你必须OnNavigatedTo在目标视图中适当地投射它。

如果您使用任何类型的 MVVM 框架,也有相应的服务,例如 Caliburn.Micro 有INavigationService.

当然,前提是您事先知道类型。

如果您想从您拥有的字符串创建“类型”本身,则必须使用反射:

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

假设pagePath不为空。

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

现在你可以:

Frame.Navigate(viewType);
于 2013-02-12T19:02:19.117 回答