Фокус 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?

726   1  

1 ответ:

Попробуйте установить фокус на выбранном элементе вашего списка на загруженном событии, как это -

Loaded += ((sender, e) =>
{
   ListBoxItem item = myListbox.ItemContainerGenerator.ContainerFromItem(myListbox.SelectedItem) as ListBoxItem;
   item.Focus();
});

Comments

    Ничего не найдено.