У меня есть TabControl, где каждая вкладка и ее содержимое являются привязкой к привязке к ObservableCollection:
<TabControl ItemsSource="{Binding Path=.}">
<TabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=propertyValue}" />
</DataTemplate>
</TabControl>
</TabControl>
Если бы я нажал на вкладку 1, введите что-то в текстовое поле и нажмите вкладку так, чтобы TextBox потерял фокус, новые данные, которые я ввел в текстовое поле, будут привязаны к элементу ObservableCollection.
Однако, если я ввожу данные в TestBox, а затем сразу же нажимаю на другую вкладку, данные никогда не выполняются. Кроме того, когда я возвращаюсь к данным, он больше не подходит к тому, что я набрал.
Кто-нибудь знает, как заставить данные быть зафиксированными до изменения текущей вкладки?
UPDATE и FIX
Что я сделал, было подключено событие SelectionChanged
:
private void tabData_SelectionChanged(object sender, SelectionChangedEventArgs e) {
theTabControl.Focus();
}
Вызов Focus() на TabControl позволяет TextBox потерять фокус и зафиксировать данные. Я сделал это, потому что у меня есть другие элементы управления, такие как DatePicker, которые демонстрируют подобное поведение. Это своего рода уловка.