2014-10-19 58 views
1

我有麻煩在ListView如何獲得點擊ListView項

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中

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")); 
     } 
    } 

編輯**

在進一步的測試中,我發現sender和事件觸發時爲空?

回答

6

好吧,這解決了它(最後)。使用SelectionChanged事件,並通過x:Name

分配給每個ListViewItem的名稱MainPage.xaml中

<ListView 
        x:Name="SettingsHub" 
        ReorderMode="Disabled" 
        SelectionChanged="SettingsHub_SelectionChanged" 
        ContinuumNavigationTransitionInfo.ExitElementContainer="True"> 
     ... 
</ListView> 

MainPage.xaml.cs中

private void SettingsHub_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (e.AddedItems.Count > 0) 
     { 
      var itemId = (e.AddedItems[0] as ListViewItem).Name; 
     }    
    } 
0

首先投下ClickedItem。以下情況之一,就可以(我不知道哪一個會工作,因爲我沒有安裝電話SDK現在窗口):

var itemId = (e.ClickedItem as ListViewItem); 
var itemId = (e.ClickedItem as Item); 

然後檢查null參考:

if (itemId != null && itemId.IsSelected) 
{ } 

而且檢查文檔ItemCLickEventArgs

+0

感謝您的提示。 'itemID'返回null。 – Matthew 2014-10-20 04:31:34

+0

也許'e.ClickedItem'而不是'sender'? – Sjeijoet 2014-10-20 08:24:50

+0

'var itemId =(e.ClickedItem as ListViewItem);'也返回null。 – Matthew 2014-10-20 16:43:09

0

這是我用

的MOD一個listView,它只是蜇在它裏面。即時通訊存儲RSSs在列表視圖中,因此方法名稱。留下代碼調試幫助。

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); 

    } 
0
private void DrivingHistoryListView_ItemClick(object sender, ItemClickEventArgs e) 
    { 
     var SelectedItem = (DrivingHistoryItem)e.ClickedItem; 
     ..... 
    } 
-1
private void DrivingHistoryListView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    var SelectedItem = (sender as ListView).SelectedItem; 
    ..... 
}