我正在开发一个Windows应用商店8.1应用,我在MainPage.xaml.cs中使用List在MainPage.xaml中添加了网格
MainPage.xaml中
<GridView Margin="20" x:Name="main" SelectionMode="None" IsItemClickEnabled="True" ItemClick="main_ItemClick">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Background="Red" Width="250" Height="200">
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" Stretch="UniformToFill" Source="{Binding ImageLocation}"/>
<TextBlock Text="{Binding Title}" Grid.Row="1" FontSize="28" />
<TextBlock Text="{Binding SubTitle}" Grid.Row="2" FontSize="16" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
MainPage.xaml.cs中
protected override void OnNavigatedTo(NavigationEventArgs e)
{
List<data> myList = new List<data>();
myList.Add(new data()
{
ImageLocation = @"Assets/network.png",
iName = "NetWork",
SubTitle ="Network",
Title = "Network"
});
myList.Add(new data()
{
ImageLocation = @"Assets/fb.png",
iName = "Facebook",
SubTitle = "Facebook",
Title = "Facebook"
});
main.ItemsSource = myList;
}
private void main_ItemClick(object sender, ItemClickEventArgs e)
{
Frame.Navigate(typeof(ListView));
}
我希望当有人点击任何网格时,ListView页面中的TextBlock会显示在MainPage中单击了哪个网格。
答案 0 :(得分:1)
如果不在代码中向您展示,这将是一个挑战,但是这里......
希望到目前为止您已经创建了两个页面。保存GridView的MainPage.xaml。还有一个DetailsPage.xaml,它将具有显示一个项目的布局。
在MainPage.xaml的代码隐藏中,就像你在示例代码中一样,你处理了GridView的ItemCLick,但是你想要点击项目的Id,而不是项目本身。原因是你要传递一个字符串,而不是一个复杂的对象。
在你的处理程序中,事件args(e)有一个名为ClickedItem的属性,它将是你绑定的项目。让我们假装它是你绑定的UserObject。在您的处理程序中执行以下操作:
var user = e.ClickedItem as UserObject;
this.Frame.Navigate(typeof(DetailPage), user.Id.ToString());
那么,这里发生了什么?几乎与之前相同的代码。除非您导航到第二页的类型而不是其他任何内容。您还传入(Navigate方法中的第二个参数)您要显示的确切记录。
然后在您的DetailPage.xaml代码隐藏中,您需要覆盖OnNavigatedTo方法。此方法是Navigation框架指向页面时调用的方法。它有一个NavigationPararmeter传递给它,你可以用来提取你传递的密钥。
我认为它实际上是你要使用的args.Parameter。您可以将其解析为整数,并使用它来获取应用程序内存中的单个记录。
var id = int.Parse(args.Parameter);
var user = YourFactory.GetUser(id);
我偏离这个的原因是你如何做到这一点&#34;我认为这是它的工作原理&#34;是因为虽然基本框架是这样运行的,但大多数开发人员并不像这样使用它。大多数开发人员都实现了类似Prism.StoreApps的东西,它不仅引入了轻量级MVVM框架,还引入了复杂的NavigationService,可以将参数直接注入到自动关联的视图模型中。
但基于你问题的简单性,尽量不要注意最后一点。我使用内置框架解释了基本工作流程。它工作正常,它将完成工作。当您准备编写更高级的实现时,您可以调查Prism.StoreApps
更多信息:http://msdn.microsoft.com/en-us/library/windows/apps/xx130655.aspx
祝你好运!