我有一个带有IsTabStop的项目控件="错误"。当我点击ItemsControl中的最后一项下面时,ItemsControl中的第一项是焦点。
我想将焦点设置为列表中的最后一项。使用以下代码,焦点设置为ItemsControl的最后一个子项...直到我释放鼠标,此时第一个项目变为焦点。我需要处理哪个事件/覆盖?
protected override void OnPointerPressed(PointerRoutedEventArgs e)
{
e.Handled = true;
var item = VisualTreeHelper.GetChild(Items.ItemsPanelRoot.Children.Last() as DependencyObject, 0) as ContentControl;
(item.Content as Control).Focus(FocusState.Keyboard);
}
更新
这里有一些说明问题的示例代码。
<ScrollViewer IsTabStop="False">
<ItemsControl IsTabStop="False">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding}" HorizontalAlignment="Stretch" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Items>
<x:Int32>1</x:Int32>
<x:Int32>2</x:Int32>
<x:Int32>3</x:Int32>
</ItemsControl.Items>
</ItemsControl>
</ScrollViewer>
当我单击文本框3下方的空白区域时,文本框1将被聚焦。我想重点关注文本框3。