gpt4 book ai didi

c# - 在 WPF GridView 中查找被点击元素的索引

转载 作者:行者123 更新时间:2023-11-30 22:02:39 25 4
gpt4 key购买 nike

我有一个元素的 GridView,我想在单击其中一个元素时执行一些操作。所以我将 GridView 的 ItemClick 属性设置为 TopicsPage_ItemClick 并实现该方法。我试过这样 react (几次尝试):

private void TopicsPage_ItemClick(object sender, ItemClickEventArgs e)
{
int index = itemGridView.SelectedIndex;
string topicName = this.topicList[index].Name;
this.Frame.Navigate(typeof(CardsPage), topicName);
}

private void TopicsPage_ItemClick(object sender, ItemClickEventArgs e)
{
int index = itemGridView.Items.IndexOf((e.ClickedItem as FrameworkElement));
string topicName = this.topicList[index].Name;
this.Frame.Navigate(typeof(CardsPage), topicName);
}

private void TopicsPage_ItemClick(object sender, ItemClickEventArgs e)
{
var item = (sender as FrameworkElement).DataContext;
int index = itemGridView.Items.IndexOf(item);
string topicName = this.topicList[index].Name;
this.Frame.Navigate(typeof(CardsPage), topicName);
}

但是上面的每个解决方案都会抛出 ArgumentOutOfRangeException 并且 index = -1。我在另一个页面上有完全相同的解决方案,我在 GridView 中有按钮并实现了它们的 Click,它在那里工作。任何建议将不胜感激。

最佳答案

假设您的 GridView ItemsSource 绑定(bind)到一个集合。

根据我的经验,如果您有 IsItemClickEnabled="True"ItemClick 事件将触发,但 SelectionChanged 不会触发留下 -1 的 SelectedIndex。

要获取索引,您可以通过从 IndexOf 转换它来获取它

private void TopicsPage_ItemClick(object sender, ItemClickEventArgs e)
{
GridView gv = sender as GridView;
index = gv.Items.IndexOf(e.ClickedItem); // don't re cast it as anything; just past it
}

您也可以从 GridView.ItemsSource collection.IndexOf 中获取它,如果您愿意的话

关于c# - 在 WPF GridView 中查找被点击元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695277/

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