【发布时间】:2013-05-03 16:15:38
【问题描述】:
如何在网格视图中获取单击的网格项的内容...例如,网格项有一个文本框...当单击网格视图项时如何获取此文本框的内容 vie ItemClickEventArgs ? 谢谢
【问题讨论】:
标签: c# xaml gridview windows-store-apps
如何在网格视图中获取单击的网格项的内容...例如,网格项有一个文本框...当单击网格视图项时如何获取此文本框的内容 vie ItemClickEventArgs ? 谢谢
【问题讨论】:
标签: c# xaml gridview windows-store-apps
试试这个代码。
<GridView x:Name="gv" SelectionChanged="gvSelectionChanged">
<GridViewItem>
<TextBox x:Name="txtOne" />
</GridViewItem>
<GridViewItem>
<TextBox x:Name="txtTwo" />
</GridViewItem>
</GridView>
private void gvSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var SelectedText = ((TextBox)((GridViewItem)gv.SelectedItem).Content).Text;
}
【讨论】:
假设您在 GridView 中使用 ItemsSource,您可以使用 e.ClickedItem 来获取您单击的 GridViewItem 的 DataContext。如果你想要实际的 GridViewItem,你可以使用
GridViewItem item = (sender as GridView).ItemContainerGenerator.ContainerFromItem(e.ClickedItem) as GridViewItem;
然后你可以根据需要使用 VisualTreeHelper.GetChild 进行挖掘(比如找到一个 TextBox)。
【讨论】:
如果您使用 DataTemplate 在 GridView 中显示项目,我发现最简单的方法是在包含所有项目的 DataTemplate 控件上捕获 Tapped、Hold 等事件。
如果你可以编码
private void ItemTapped(object sender, TappedRoutedEventArgs e)
{
var clickedItem = (sender as FrameworkElement).DataContext;
}
这将为您提供被点击项目中的对象。
【讨论】: