У меня есть ItemControl, который привязывается к ObservableCollection с простым классом, который содержит две строки. Для каждого элемента коллекции показаны два текстовых поля. Я установил UpdateSourceTrigger привязки TextBox к PropertyChanged, потому что мне нужно немедленно обнаружить изменения значений.ListBox с UpdateSourceTrigger установлен в PropertyChanged в ItemsControl теряет фокус при вводе
Проблема заключается в том, что когда я начинаю вводить текст в один из текстовых полей, фокус текстового поля теряется после нажатия первой клавиши. Если я хочу вставить следующую букву, мне нужно снова щелкнуть в текстовом поле. Я не знаю, почему фокус текстового поля теряется после изменения. Кто-нибудь знает, как я могу изменить это поведение?
Когда я удаляю часть UpdateSourceTrigger и использую поведение привязки по умолчанию, все работает нормально, но это не вариант для меня, потому что мне нужно немедленно обнаружить изменения.
Я также пытался использовать ListBox или ListView вместо ItemsControl, но фокус текстовых полей также теряется после изменения значения.
Вот моя декларация ItemsControl:
<ItemsControl ItemsSource="{Binding Names}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Name" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Description" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Description, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Я создал окно и добавил 'ItemsControl' с помощью вашего xaml, но не смог воспроизвести проблему – ASh
Да, проблема не в размещенном коде. Возможно, в коде есть некоторая обработка событий. – icebat
Ок, вы правы, произошла ошибка в обработке событий, которая вызвала странное поведение. Спасибо ASh и icebat, я должен был проверить это! – NicoP