私のアプリケーションには、次の 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 にテキストを入力します
- 2 番目のタブを選択します
- 最初のタブを選択: 最初のタブの TextBox に入力されたテキストが消えた (バインディングが適用されていないため)
別のシナリオ:
- 最初のタブを選択
- 最初の TextBox にテキストを入力します
- 2番目のTextBoxを選択します(または、タブを変更する以外にフォーカスを変更するもの)
- 2 番目のタブを選択します
- 最初のタブを選択: 入力したテキストは引き続き表示されます (バインディングが適用されたため)。
それは正常な動作ですか?それとも私は何か間違ったことをしていますか?ありがとうございました。