我有一个标签控件
<TabControl Height="Auto" Grid.Row="1" ItemsSource="{Binding Tabs}" IsSynchronizedWithCurrentItem="True">
Tabs
中绑定ViewModel
。我还使用CollectionViewSource
来关注标签
protected ObservableCollection<TabViewModel> _tabs;
protected ICollectionView _tabsViewSource;
public ObservableCollection<TabViewModel> Tabs
{
get { return _tabs; }
}
public void OnTabsChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.NewItems != null && e.NewItems.Count > 0)
foreach (TabViewModel tab in e.NewItems)
{
tab.CloseRequested += OnCloseRequested;
_tabsViewSource.MoveCurrentTo(tab); // focus newly created tab
}
if (e.OldItems != null && e.OldItems.Count > 0)
foreach (TabViewModel tab in e.OldItems)
tab.CloseRequested -= OnCloseRequested;
}
当我有更多1个标签时,当我创建新标签时,标签正确聚焦
当没有标签时,新标签似乎没有正确聚焦。注意标题标题
我该如何解决这个问题?或是什么导致这种行为?显示文本框(选项卡内容),但标题不会像其选中的那样呈现
它适用于一个新的文件/项目...嗯...必须是一些相关的代码......我可能会重做那部分......
答案 0 :(得分:1)
IsSynchronizedWithCurrentItem="True"
绑定到TabControl.ItemsSource
,否则 ICollectionView
没有任何意义。
我无法判断将ObservableCollection的绑定更改为ICollectionView是否可以解决您的问题,但这就是我设置数据绑定tabcontrol的方法。
另一种方法是公开新的财产
public TabViewModel CurrentTabViewModel
{
get
{
return _tabs.CurrentItem as TabViewModel:
}
set
{
_tabs.MoveCurrentTo(value);
}
}
并将TabControl的SelectedItem
绑定到CurrentTabViewModel
<TabControl SelectedItem="{Binding Path=CurrentTabViewModel}" ... />
答案 1 :(得分:0)
没有代码,初始化单标签集合,它只是猜测。 您的解决方法是设置tabView = 0 - &gt;的SelectedIndex。最初选择第一个标签。
<TabControl Height="Auto"
Grid.Row="1"
ItemsSource="{Binding Tabs}"
IsSynchronizedWithCurrentItem="True"
SelectedIndex="0">