2017-02-22 64 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