我正在尝试使用 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 中键入内容时,相同的文本将保留在不同的 tabItems 中,我不希望这样。
我究竟做错了什么?
我有同样的问题。这answer https://stackoverflow.com/questions/2914495/wpf-how-to-programmatically-remove-focus-from-a-textbox帮助过我。我的解决方案是在选项卡更改时从文本框中删除焦点。当文本框中的焦点被移除时,新内容将按预期设置为绑定属性。
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);
}
}
}
or use
Text="{Binding UpdateSourceTrigger=PropertyChanged}"
在文本框绑定上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)