MVVM 选项卡:聚焦新选项卡

发布于 2024-09-28 05:47:12 字数 868 浏览 3 评论 0原文

我可以添加 &删除类似于著名的 MSDN 文章 的选项卡。基本上是一个ObservableCollection。我添加了像 _tabs.Add(new TabViewModel()) 这样的选项卡,但最新的选项卡没有聚焦。我想集中注意力。我该怎么做?

一种方法

因为我有一个可观察集合的视图源,所以我可以执行以下操作...另一个选择是 @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;
}

I can add & remove tabs similar to the famous MSDN article. Basically a ObservableCollection<TabViewModels>. And I add tabs like _tabs.Add(new TabViewModel()) but the newest tab is not focused. I want to focus it. How do I do it?

1 way to do it

since i have a view source for my observable collection, I can do the below... another option will be @vorrtex method

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丑疤怪 2024-10-05 05:47:12

使用选定项:

    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}" />

Use 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}" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文