2017-02-22 25 views
3

我想檢測列表視圖中的哪個項目是關注的,但我沒有得到檢測到的事件。我正在開發Xbox One UWP,所以我不能使用鼠標或鍵盤事件,只能使用焦點。XAML檢測列表視圖項是否被聚焦

<ListView.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Vertical" GotFocus="StackPanel_GotFocus" > 
      <StackPanel Name="Imagestack" Orientation="Horizontal"> 
       <Image Source="{Binding Image}" Height="144" Width="256" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Title}" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </StackPanel> 
     </StackPanel> 
    </DataTemplate> 
</ListView.ItemTemplate> 
private void StackPanel_GotFocus(object sender, RoutedEventArgs e) 
{ 
    Debug.WriteLine("Image focus"); 
    Image img = sender as Image; 
    Bgimage.Source = img.Source; 
} 
+0

您的發件人不是圖片。它的Stackpanel。你必須走到StackPanel內的圖像 – lokusking

+0

感謝您指出錯誤。但事件沒有得到檢測,我沒有得到日誌。 – Muniraj

+0

我不認爲一個stackpanel **可以獲得焦點。它甚至會用它做什麼? –

回答

1

你應該註冊到ListView.GotFocus事件。

來自事件參數的OriginalSource將是ListViewItem已獲得焦點。然後您可以使用ListViewItem.Content檢索項目內容。

XAML:

<ListView x:Name="list" GotFocus="list_GotFocus"> 
    <ListView.ItemTemplate>...</ListView.ItemTemplate> 
</ListView> 

後面的代碼:

private void list_GotFocus(object sender, RoutedEventArgs e) 
{ 
    var focusedItem = (e.OriginalSource as ListViewItem)?.Content; 
} 
+0

感謝您的幫助。我完成了MyListItem focusedItem =(MyListItem)(e.OriginalSource as ListViewItem)?Content; Debug.WriteLine(「focusedItem」+ focusedItem.Title); Debug.WriteLine(「focusedItem」+ focusedItem.index); var temp = focusedItem.Image; Bgimage.Source =(ImageSource)temp; – Muniraj

1

你並不需要得到關注狀態,以獲得從點擊ListViewItem的數據,該ListViewItemClick事件可能是你'尋找:

<ListView x:Name="LV_Items" 
      IsItemClickEnabled="True" 
      ItemClick="LV_Items_ItemClick" 
      > 
</ListView> 

private void LV_Items_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    // Get instance of the model in the clicked ListViewItem 
    MyModel myModel = (MyModel)e.ClickedItem; 

    Image img = myModel.Image; 
} 
+0

我無法使用點擊,因爲我需要專注(xbox一個平臺 - 導航)。感謝您的幫助 – Muniraj

+0

您是否在真正的Xbox上嘗試過它?我沒有機會,但我懷疑你必須跟蹤重點,以獲得選定的項目.. –

+0

是的,我試過我的Xbox和使用重點跟蹤導航 – Muniraj

相關問題