2013-04-05 59 views
1

我用这个XAML代码创建一个GridView和添加项目:如何确定点击项目在GridView

<Grid x:Name="MainStack" HorizontalAlignment="Left" Height="628" Grid.Row="1" VerticalAlignment="Top" Width="1366"> 
     <GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemsGridView" 
     AutomationProperties.Name="Items" 
     TabIndex="1" 
      Grid.RowSpan="2" 
     Padding="130,42,116,46" 
     ItemTemplate="{StaticResource Standard250x250ItemTemplate}" 
     SelectionMode="None" 
     IsSwipeEnabled="false" 
     IsItemClickEnabled="True" 
     Background="#FFFB0404" Margin="0,0,0,0" RenderTransformOrigin="0.489,0.503" ItemClick="MainPage_Click"> 
      <x:String>Item 1</x:String> 
      <x:String>Item 2</x:String> 
      <x:String>Item 3</x:String> 
      <x:String>Item 4</x:String> 
      <x:String>Item 5</x:String> 
      <x:String>Item 6</x:String> 
      <x:String>Item 7</x:String> 
      <x:String>Item 8</x:String> 
     </GridView> 
    </Grid> 

然后我尝试使用此C#代码

private void MainPage_Click(object sender, ItemClickEventArgs e) 
    { 
     string output = e.ClickedItem.ToString(); 
     int ClickValue = Convert.ToInt32(output); 
     if (ClickValue == 0) 
     { 
      this.Frame.Navigate(typeof(ItemsPageRSS)); 
     } 
    } 

使当第一个项目被点击时,应用程序导航到页面,但它给出了一个错误。

如有任何人都可以告诉我怎么每个IEM隔离和每个以及如何通过添加标题,副标题和图像的项目定制gridview的项目添加一个单独的单击事件。 预先感谢您。

+0

你应该写下你得到的错误。来自同一用户重复 – 2013-04-05 12:55:50

+0

问题:http://stackoverflow.com/questions/15833994/how-to-determine-which-gridview-item-is-clicked-and-to-create-a-separate-click-e?rq = 1 – Nogard 2013-04-05 13:19:20

回答

6

在这里,我给你简单的例子,如果你无法理解MSDN样本。只需创建新项目并粘贴整个代码即可。

XAML

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <GridView 
     x:Name="itemGridView" 
     ItemTemplate="{StaticResource Standard250x250ItemTemplate}" 
     SelectionMode="None" 
     IsItemClickEnabled="True" 
     Background="#FFFB0404" 
     ItemClick="MainPage_Click"/> 
</Grid> 

C#

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var gvData = new ObservableCollection<MyData>(); 
    for (int i = 0; i < 8; i++) 
    { 
     gvData.Add(new MyData 
     { 
      ID = i, 
      Image = new BitmapImage(new Uri("ms-appx:///Assets/Logo.png")), //You can add any image 
      Title = "Title " + i, 
      Subtitle = "Subtitle " + i 
     }); 
    } 
    itemGridView.ItemsSource = gvData; 
} 

private void MainPage_Click(object sender, ItemClickEventArgs e) 
{ 
    MyData output = e.ClickedItem as MyData; 
    int ClickValue = output.ID; 
    if (ClickValue == 0) 
    { 
     this.Frame.Navigate(typeof(ItemsPageRSS)); 
     //TODO : Do whatever you want 
    } 

    //..... 
    //TODO : Do operations for other items as well. 
} 

您可以创建MainPage(XAML页面)类的范围之外MyData类。

public class MyData 
{ 
    public int ID { get; set; } 
    public ImageSource Image { get; set; } 
    public string Title { get; set; } 
    public string Subtitle { get; set; } 
} 
+0

谢谢我现在会尝试 – 2013-04-07 10:47:27

+0

谢谢我现在尝试它,但它给了我这些错误命名空间名称在MyData.cs中找不到ImageSource,在MainPage.xaml.cs中找不到命名空间名称BitmapImage。我可能做错了什么?请原谅我的小知识 – 2013-04-07 11:28:33

+0

感谢,我修改了它和它的作品 – 2013-04-07 12:59:11

相关问题