Фокус WPF listbox без изменения выбранного элемента
Listbox в DataTemplate
<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>
Привязка SelectedValue работает полностью, только если не перемещать фокус при загрузке usercontrol
Я хочу сфокусировать первый элемент в usercontrol, когда я возвращаюсь к элементу управления (используя Prism navigation), который оказывается списком.
Но когда я добавляю следующую строку, то каждый раз, когда я перемещаюсь назад, выделение сбрасывается на первый элемент, видимый как синяя подсветка-выделение не остается на ранее выбранном пункт.
Loaded += (sender, e) =>
control.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
Без строки все работает, за исключением того, что список не имеет фокуса клавиатуры (серая подсветка ранее выбранного элемента списка, а не синяя подсветка).
Кроме того, проблема возникает только в том случае, если я сосредоточился на другом списке перед перемещением вперед, то есть есть два списка, и если я остаюсь на первом списке перед перемещением вперед, то правильный выбор сохраняется даже с помощью movefocus?
1 ответ:
Попробуйте установить фокус на выбранном элементе вашего списка на загруженном событии, как это -
Loaded += ((sender, e) => { ListBoxItem item = myListbox.ItemContainerGenerator.ContainerFromItem(myListbox.SelectedItem) as ListBoxItem; item.Focus(); });
Comments