我有一个 TabControl,其中每个 Tab 及其内容都数据绑定到 ObservableCollection:
<TabControl ItemsSource="{Binding Path=.}">
<TabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=propertyValue}" />
</DataTemplate>
</TabControl>
</TabControl>
如果我要单击 Tab 1,然后在文本框中键入一些内容并单击选项卡,以便 TextBox 失去焦点,我在文本框中键入的新数据将被提交到 ObservableCollection 项。
但是,如果我在 TestBox 中键入数据,然后立即单击另一个选项卡,则永远不会提交数据。另外,当我返回数据时,它不再设置为我输入的内容。
任何人都知道在更改当前选项卡之前强制数据提交的方法吗?
更新和修复
我所做的是连接SelectionChanged
事件:
private void tabData_SelectionChanged(object sender, SelectionChangedEventArgs e) {
theTabControl.Focus();
}
在 TabControl 上调用 Focus() 会使 TextBox 失去焦点并提交数据。我这样做是因为我有其他控件(例如 DatePicker),它们表现出类似的行为。这是一个包罗万象的东西。