Настройка фокуса на новые элементы в элементах управления - PullRequest
5 голосов
/ 20 апреля 2009

У меня есть ListBox, в который добавляются новые элементы через привязку данных (т. Е. Что-то добавляется в список, и окно обновляется для добавления нового элемента).

Элементы в списке являются редактируемыми шаблонами данных, поэтому возникает вопрос: как установить фокус на первое поле в шаблоне при добавлении нового элемента?

Я посмотрел на этот вопрос и выясню, получит ли он меня где-нибудь, но на самом деле это не прямой ответ на мой вопрос.

1 Ответ

7 голосов
/ 20 апреля 2009

Вопрос, с которым вы связаны, должен работать в вашей конкретной ситуации. Пока вы используете 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>
...