В моем приложении, у меня есть следующий TabControl:Странное поведение с двухсторонним Binding и TabControl
<TabControl ItemsSource="{Binding MyItemsSource}"
ContentTemplate="{StaticResource ResourceKey=MyContentTemplate}"
IsSynchronizedWithCurrentItem="True" />
Вот ContentTemplate используется:
<DataTemplate x:Key="MyContentTemplate">
<Canvas>
<TextBox Text="{Binding Path=MyFirstText, Mode=TwoWay}" />
<TextBox Text="{Binding Path=MySecondText, Mode=TwoWay}" />
</Canvas>
</DataTemplate>
И в ItemsSource:
public ObservableCollection<MyData> MyItemsSource { get; set; }
public class MyData
{
public string MyFirstText { get; set; }
public string MySecondText { get; set; }
}
Рассмотрите этот сценарий:
- Выберите первую вкладку
- Введите текст в первом TextBox
- Выберите вторую вкладку
- Выберите первую вкладку: Текст, введенный в TextBox на первой вкладке исчезала (поскольку связывание не было применяется)
Другой сценарий:
- Выберите первую вкладку
- Введите какой-нибудь текст в первом TextBox
- Выберите второй TextBox (или что-то изменить фокус, за исключением вкладки изменения)
- Выберите вторую вкладку
- Выберите первую вкладку: текст, введенный по-прежнему отображается (потому что применялось связывание)
Это нормальное поведение? Или я делаю что-то неправильно? Спасибо.
Вы отслеживали? Вызывается Set? Показать MyItemsSource. – Paparazzi
Я отредактировал, чтобы добавить ItemsSource. –