我正在尝试使用DataBinding动态填充TabControl但有问题; dataBinding运行正常,但我希望每个TabItem的内容彼此独立。这是我的XAML代码:
<TabControl DockPanel.Dock="Left" ItemsSource="{Binding OpenChats}"Name="tabChats" VerticalAlignment="Top" Width="571">
<TabControl.ItemTemplate>
<DataTemplate >
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBox />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
TabItems是使用不同的标题创建的(如我所愿)但是当用户在ContentTemplate内的TextBox中键入somwthing时,相同的文本将保存在不同的tabItems中,我不希望这样。
我做错了什么?
谢谢!
答案 0 :(得分:1)
我有同样的问题。这answer对我有所帮助。我的解决方案是在更改选项卡时从文本框中删除焦点。删除文本框中的焦点后,新内容将按预期设置为绑定属性。
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DependencyObject focusedElement = (FocusManager.GetFocusedElement(tabControl) as DependencyObject);
if (focusedElement != null)
{
DependencyObject ancestor = VisualTreeHelper.GetParent(focusedElement);
while (ancestor != null)
{
var element = ancestor as UIElement;
if (element != null && element.Focusable)
{
element.Focus();
break;
}
ancestor = VisualTreeHelper.GetParent(ancestor);
}
}
}
或使用
Text="{Binding UpdateSourceTrigger=PropertyChanged}"
关于文本框绑定。
答案 1 :(得分:0)
ContentTemplate中的TextBox没有绑定。尝试
<TabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding}" />
</DataTemplate>
</TabControl.ContentTemplate>
必要时调整绑定路径