2016-11-05 51 views
0

我正在創建UWP項目。在這我使用listview來顯示內容。動態地將內容添加到列表視圖併成功完成它。我有一個問題,當我選擇的內容selectedIndex值總是-1。獲取listview選定的索引?

  <ListView Name="MyListView" IsItemClickEnabled="False" SelectionMode="Single" SelectionChanged="MyListView_SelectionChanged_1"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <ListViewItem Height="80" Width="290" Tapped="ListViewItem_Tapped" Margin="-10,0,-10,0"> 
           <StackPanel Orientation="Horizontal" Margin="-10,0,-24,0" HorizontalAlignment="Right" Width="288" > 
            <Border Background="#E94F08" Height="75" Margin="0,0,0,0" Width="288" CornerRadius="50" > 
             <StackPanel Orientation="Horizontal"> 
              <Ellipse Height="68" Margin="5,0,0,0" Width="70" HorizontalAlignment="Left" > 
               <Ellipse.Fill> 
                <ImageBrush ImageSource="/Assets/4.jpg"/> 
               </Ellipse.Fill> 
              </Ellipse> 
              <TextBlock Margin="10,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Name }" Foreground="Black" FontSize="20"> 
              </TextBlock> 
             </StackPanel> 
            </Border> 
           </StackPanel> 
          </ListViewItem> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
+0

只需注意:您不需要在數據模板中使用ListViewItem,當ListView創建項目時,整個數據模板將被ListViewItem包裝。 –

+0

我也在數據模板中使用listviewitem。但這不是我的問題,我需要得到selectedindex或選定的價值,我不能得到那些請幫助。@ MehrzadChehraz –

+1

提供的代碼是不夠的,找不到我的問題,至少不是。 –

回答

0

你可以做到這一點,

XAML

<ListView x:Name="listViewName" 
      IsItemClickEnabled="True" 
      SelectionMode="Single" 
      SelectionChanged="listView_SelectionChanged"> 
</ListView> 

C#

private void listView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    int index = listViewName.SelectedIndex; 
} 

希望這有助於:)

0

你應該做的第一件事就是刪除ListViewItem,ItemTemplate,因爲您放入該模板的所有內容都已包裝在ListViewItem中。通過刪除它,您還可以刪除不正確的tapper事件處理程序。

下一步是設置IsItemClickEnabled="True"而不是False告訴ListView人們實際上可以點擊/點按您的物品。您不能處理SelectionChanged事件或ItemClicked事件,第二種情況是同一項目上的多次點擊也會被註冊(如果您需要的話)。

我更新你的XAML到:

<ListView Name="MyListView" IsItemClickEnabled="True" SelectionMode="Single" SelectionChanged="MyListView_SelectionChanged_1"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" Margin="-10,0,-24,0" HorizontalAlignment="Right" Width="288" > 
       <Border Background="#E94F08" Height="75" Margin="0,0,0,0" Width="288" CornerRadius="50" > 
        <StackPanel Orientation="Horizontal"> 
         <Ellipse Height="68" Margin="5,0,0,0" Width="70" HorizontalAlignment="Left" > 
          <Ellipse.Fill> 
           <ImageBrush ImageSource="/Assets/4.jpg"/> 
          </Ellipse.Fill> 
         </Ellipse> 
         <TextBlock Margin="10,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Name }" Foreground="Black" FontSize="20"> 
         </TextBlock> 
        </StackPanel> 
       </Border> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

如果你需要的SelectedItem而不是指數,它也許更容易SelectedItem屬性綁定。不要忘記在綁定上使用Mode = TwoWay。