gpt4 book ai didi

c# - Windows 8 C# GridView e.ClickedItem

转载 作者:行者123 更新时间:2023-11-30 17:07:54 25 4
gpt4 key购买 nike

我有一个包含项目的 GridView 和一个数组,其中包含有关我的 GridView 中特定项目的详细信息。我想获得被点击项目的索引,我尝试使用我之前在 ListView 中使用的相同代码:

private void GridView1_ItemClick(object sender, ItemClickEventArgs e)
{
int test = GridView1.Items.IndexOf(e.ClickedItem);
}

当我调试我的代码时,int test 将始终具有值 -1。我不知道为什么这不起作用,我希望你们中的一个能做到。

编辑:感谢所有回复!这里有一些额外的信息:我已经禁用了 SelectionMode,因为我只想捕获 ClickedItem 的索引。我想知道索引,因为它链接到我的额外信息数组。

由于我的 SelectionMode 设置为“None”,我无法捕获 SelectedItem/SelectedIndex。我尝试启用它们,但再次收到值“-1”。

编辑 #2: 我没有设置任何 ItemSource,因为我手动添加了项目。这可能是问题所在吗?我的 ListView 在不使用 ItemSource 时没有问题。

编辑#3:

C#代码:

TextBlock content_textblock = new TextBlock();

content_textblock.Width = 250;

content_textblock.Text = total;

content_textblock.TextWrapping = TextWrapping.Wrap;

content_textblock.Foreground = (SolidColorBrush)Application.Current.Resources["ListViewItemOverlayForegroundThemeBrush"];
content_textblock.Style = (Style)Application.Current.Resources["CaptionTextStyle"];
content_textblock.LineHeight = 30;
content_textblock.Padding = new Thickness(5, 0, 10, 15);
content_textblock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
content_textblock.Arrange(new Rect(0, 0, content_textblock.DesiredSize.Width, content_textblock.DesiredSize.Height));


StackPanel content_stackpanel = new StackPanel();
content_stackpanel.Margin = new Thickness(0, 250 - content_textblock.ActualHeight, 0, 0);
content_stackpanel.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top;
content_stackpanel.Height = content_textblock.Height;
content_stackpanel.Width = 250;
content_stackpanel.Background = (SolidColorBrush)Application.Current.Resources["ListViewItemOverlayBackgroundThemeBrush"];
content_stackpanel.Children.Add(content_textblock);


ImageBrush content_brush = new ImageBrush();
content_brush.ImageSource = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri("http://ic.tweakimg.net/ext/i/thumbs_fpa_small/1357208162.jpeg")); //it is a placeholder, haha

GridView1.Items.Add(new GridViewItem { Background = content_brush, Content = content_stackpanel, Width = 250, Height = 250 });

XAML:

<GridView x:Name="GridView1" Margin="0,29,0,0" Grid.Row="2" SelectionMode="None" ItemClick="GridView1_ItemClick" IsItemClickEnabled="True"/>

最佳答案

不知道你为什么这样做,在标记中声明控件,并将其绑定(bind)到某些对象属性或类似的标记中要容易得多。

但是,要获取项目的索引,您应该搜索点击项目的父级,如下所示:

private void GridView1_ItemClick(object sender, ItemClickEventArgs e)
{
int test = GridView1.Items.IndexOf((e.ClickedItem as FrameworkElement).Parent);
}

关于c# - Windows 8 C# GridView e.ClickedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14156544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com