MVVM选项卡:聚焦新选项卡

时间:2010-10-19 06:58:06

标签: c# wpf mvvm observablecollection

我可以添加&amp;删除与着名MSDN article类似的标签。基本上是ObservableCollection<TabViewModels>。我添加了像_tabs.Add(new TabViewModel())这样的标签,但最新的标签没有集中。我想集中注意力。我该怎么做?

1种方法

因为我有一个可观察集合的视图源,我可以执行以下操作...另一个选项是@vorrtex方法

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);
        }
    if (e.OldItems != null && e.OldItems.Count > 0)
        foreach (TabViewModel tab in e.OldItems)
            tab.CloseRequested -= OnCloseRequested;
}

1 个答案:

答案 0 :(得分:10)

使用SelectedItem:

    public ObservableCollection<TabViewModel> Pages { get; set; }

    private TabViewModel currentPage;

    public TabViewModel CurrentPage
    {
        get { return currentPage; }
        set
        {
            currentPage = value;
            OnPropertyChanged("CurrentPage");
        }
    }

    public void AddPage()
    {
        var page = new TabViewModel();
        this.Pages.Add(page);
        this.CurrentPage = page;
    }

XAML:

<TabControl ItemsSource="{Binding Pages}" SelectedItem="{Binding CurrentPage, Mode=TwoWay}" />