[英]How to Get Clicked ListView Item
I am having trouble getting the clicked item in a ListView
我在获取ListView
的单击项时遇到麻烦
MainPage.xaml MainPage.xaml
<ListView
ReorderMode="Disabled"
SelectionMode="Single"
IsItemClickEnabled="True"
ItemClick="Section_ItemClick"
ContinuumNavigationTransitionInfo.ExitElementContainer="True">
<ListViewItem Margin="0,0,0,10" Background="LightGray">
<StackPanel Orientation="Horizontal">
<Image Source="/Assets/Icons/1.png" Width="94" Height="94"/>
<TextBlock x:Uid="1" />
</StackPanel>
</ListViewItem>
...
</ListView>
MainPage.xaml.cs MainPage.xaml.cs
private async void Section_ItemClick(object sender, ItemClickEventArgs e)
{
ListViewItem itemId = ((sender as ListView).SelectedItem as ListViewItem);
if (itemId != null)
{
.. do something ..
}
else
{
throw new Exception(this.resourceLoader.GetString("NavigationFailedExceptionMessage"));
}
}
EDIT** 编辑**
In further testing I've discovered that both sender
and e
are null when the event fires? 在进一步的测试中,我发现事件触发时, sender
和e
均为空?
Ok this solved it (finally). 好的,这终于解决了。 Use the SelectionChanged event, and assign each ListViewItem a name via x:Name
使用SelectionChanged事件,并通过x:Name
每个ListViewItem分配一个x:Name
MainPage.xaml MainPage.xaml
<ListView
x:Name="SettingsHub"
ReorderMode="Disabled"
SelectionChanged="SettingsHub_SelectionChanged"
ContinuumNavigationTransitionInfo.ExitElementContainer="True">
...
</ListView>
MainPage.xaml.cs MainPage.xaml.cs
private void SettingsHub_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
{
var itemId = (e.AddedItems[0] as ListViewItem).Name;
}
}
Cast the ClickedItem
first. 首先投放ClickedItem
。 One of the following should work (I am not sure which one will work because I don't have windows phone SDK installed right now): 以下其中一项应该可以工作(我不确定哪一个可以工作,因为我现在没有安装Windows Phone SDK):
var itemId = (e.ClickedItem as ListViewItem);
var itemId = (e.ClickedItem as Item);
then check for null
reference: 然后检查null
引用:
if (itemId != null && itemId.IsSelected)
{ }
Also check the documentation for ItemCLickEventArgs
还要检查ItemCLickEventArgs
的文档
for a listView that has just stings in it. 一个只有刺痛的listView。 Im storing rss feed urls in a listview, hence the Method Name. 我在列表视图中存储rss feed URL,因此存储了方法名称。 Left debug in code to help. 在代码中进行调试以提供帮助。
private void RSSItem_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(" CALLED ITEM CHANGED ");
//ListViewItem itemId = ((sender as ListView).SelectedItem as ListViewItem);
int count = e.AddedItems.Count;
string itemStr = e.AddedItems[0].ToString();
System.Diagnostics.Debug.WriteLine(" DOWNLOADING FEED URL : " + itemStr);
}
private void DrivingHistoryListView_ItemClick(object sender, ItemClickEventArgs e)
{
var SelectedItem = (DrivingHistoryItem)e.ClickedItem;
.....
}
private void DrivingHistoryListView_ItemClick(object sender, ItemClickEventArgs e)
{
var SelectedItem = (sender as ListView).SelectedItem;
.....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.