Задаване на фокус върху нови елементи в контрола на елементи

Имам ListBox, към който се добавят нови елементи чрез Databinding (т.е. нещо се добавя към списъка и кутията се актуализира, за да включва новия елемент).

Елементите в списъчното поле са редактируеми шаблони за данни, така че въпросът е: Как да задам фокуса към първото поле в шаблона, когато се добави нов елемент?

Разгледах този въпрос и Ще видя дали ще ме отведе някъде, но всъщност не е директен отговор на въпроса ми.


person Steve Mitcham    schedule 20.04.2009    source източник


Отговори (1)


Въпросът, към който сте се свързали, трябва да работи за вашата конкретна ситуация. Докато използвате ObservableCollection за вашия източник, можете да зададете:

<ListBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding MyCollection}" ItemTemplate="{StaticResource MyTemplate}/>

Това ще гарантира, че когато елементите се добавят, фокусът се поставя върху новия елемент, след което мениджърът на фокуса (погледнете първия отговор в тази нишка) трябва да постави фокус върху TextBox. Статията на MSDN предоставя полезен пример, поставен в шаблон тук:

<DataTemplate x:Key="MyTemplate" DataType="{x:Type Classes:MyClass}">    
  <StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}">
    <Button Name="firstButton" />
  </StackPanel>
</DataTemplate>
person Jeff Wain    schedule 20.04.2009
comment
Проблемът ми всъщност става по-сложен поради наличието на UserControl в шаблона за данни, който изисква обработка на събитието за фокус и предаването му към действителното текстово поле, което искам, но настройките тук ме доведоха достатъчно далеч, за да го разбера, благодаря. - person Steve Mitcham; 21.04.2009
comment
Може да публикувате своя код, в случай че някой друг търси нещо подобно. - person Jeff Wain; 21.04.2009