在TabControl中绑定SelecteItem

本文关键字:SelecteItem 绑定 TabControl | 更新日期: 2023-09-27 18:11:06

是MVVM项目。我有一个列表框与TabControls里面的项目。tabitem对于每个TabControl都是不同的,并且是从ViewModel中绑定的:

                <TabControl ItemsSource="{Binding Tabs}"
                </TabControl >  

标签:

    public ObservableCollection<TabItem> Tabs
    {   get { return tabs;  }
        set {
            tabs = value;
            value.CollectionChanged += delegate
            {
                OnPropertyChanged("Tabs");
            };
            OnPropertyChanged("Tabs"); } }

制表符只按以下方式填充一次:

                Tabs = new ObservableCollection<TabItem>();
                if (details.Image != null || !String.IsNullOrEmpty(details.Summary))
                    Tabs.Add(new TabItem() { Header = "General Info", Content = new GeneralInfo() { DataContext = ItemDetails } });  ........... 6 different types

这是我所拥有的一些信息。然后我动态地改变这个TabControls的DataContext's来模拟滚动。

ViewModel的所有信息都被绑定到控件中,但是TabControl有一个问题。头文件被绑定。但内容不会。所有标头被取消选中,tabcontrol内容区域为空。

我试图使TwoWayBinding上的selecteindex和SelectedItem,但它没有帮助....似乎selecteindex没有做任何可以选择TabItem的事情。SelectedItem不起作用,因为我认为它在每次数据上下文改变后都有新的引用。因为TabControl。ItemsSource重新绑定并创建新的tabitem。

也许有人解决了同样的问题,知道解决方法?

谢谢

在TabControl中绑定SelecteItem

我的问题已经解决了。问题是我使用控件作为DataContext:-表项列表- TabItems内容中的控件有一些过程,我不能完全理解。但是,想法是,当DataContext的变化,一个DataContext可以分配给2个不同的tabcontrol。因为UI控件不能同时属于两个父类,所以,绑定应该显示控件从DataContext在内容不起作用。并且不会抛出异常(因为它是绑定的)Smile |:)

因此,我从DataContext中删除所有UI对象,并添加对象模型。并创建UserControls显示这些对象模型的视图