<ListBox
ItemsSource="{Binding Path=(Duties:IPicker.Choices)}"
SelectedValue="{Binding Path=(Duties:IPicker.Selection),
ValidatesOnDataErrors=True,
UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel MaxWidth="{DynamicResource ListWidth}" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
当我导航回控件(使用Prism导航)时,我想将第一个元素集中在usercontrol中,这恰好是列表框。
但是当我添加以下行时,每次我向后导航时,选择将重置为第一个项目,被视为蓝色突出显示 - 选择不会保留在先前选择的项目上。
Loaded += (sender, e) =>
control.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
如果没有该行,一切都有效,除了列表框没有键盘焦点(以前选择的列表框项目的灰色突出显示而不是蓝色突出显示)。
此外,问题只发生在我向前导航之前我专注于另一个列表框,即有两个lisboxes并且如果我在向前导航之前留在第一个列表框上,那么即使使用movefocus也能保留正确的选择?
答案 0 :(得分:3)
尝试在加载的事件上将焦点设置在列表框的选定项目上,如下所示 -
Loaded += ((sender, e) =>
{
ListBoxItem item = myListbox.ItemContainerGenerator.ContainerFromItem(myListbox.SelectedItem) as ListBoxItem;
item.Focus();
});