Problem is: Some UWP (C#) code works well on PC but DOESN'T work on Xbox One device.
I have two ListViews 'LeftListView' and 'RightListView'. Each list has event 'ItemClick'. If event is fired on LeftListView I move focus to RightListView and the similar happens when event is fired on RightListView.
<ListView
x:Name="LeftListView"
Grid.Column="0"
SelectedIndex="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsItemClickEnabled="True"
ItemClick="Left_ListView_ItemClick">
<x:String>Left Item 1</x:String>
<x:String>Left Item 2</x:String>
<x:String>Left Item 3</x:String>
<x:String>Left Item 4</x:String>
<x:String>Left Item 5</x:String>
</ListView>
<ListView
x:Name="RightListView"
Grid.Column="1"
SelectedIndex="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsItemClickEnabled="True"
ItemClick="Right_ListView_ItemClick">
<x:String>Right Item 1</x:String>
<x:String>Right Item 2</x:String>
<x:String>Right Item 3</x:String>
<x:String>Right Item 4</x:String>
<x:String>Right Item 5</x:String>
</ListView>
C# Code
private void Left_ListView_ItemClick(object sender, ItemClickEventArgs e)
{
//Set focus to "Right ListView"
GetFocusedItemContainer(RightListView).Focus(FocusState.Programmatic);
}
private void Right_ListView_ItemClick(object sender, ItemClickEventArgs e)
{
//Set focus to "Left ListView"
GetFocusedItemContainer(LeftListView).Focus(FocusState.Programmatic);
}
private ListViewItem GetFocusedItemContainer(ListView lv)
{
return (ListViewItem)lv.ContainerFromIndex(lv.SelectedIndex);
}
My question is: Is it already known issue on Xbox? Is it defect on Xbox device only? Because this code works well on PC (Windows 10 Creators Update)
BTW: I have a solution which works well on Xbox too.
//!!! Solution which works on Xbox!!!
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low,
() => { GetFocusedItemContainer(LeftListView).Focus(FocusState.Programmatic); });
As you can see - solution is, but it looks like a temporary Work-Around.