2011-04-04 56 views
0

我是WPF的新手,我正在创建一个使用TabControl的应用程序。我正在使用DataTemplateSelector,而我的数据源是我从XML创建的具有“type”和“categoryID”属性的对象。我选择我的数据模板基于“类型”,它工作正常,但我还需要在运行时为每个categoryID创建一个tabitem。我的问题是目前它为每个对象创建一个新的TabItem。如何根据categoryID创建新的tabitem并将dataTemplate放置在该选项卡上,并且如果该选项卡已经创建,则将DataTemplate放置在该选项卡上而不是创建新的选项卡。动态TabItems c#Wpf

在此先感谢!

+0

您可以使用ObservableCollection类并绑定到ItemsSource属性。在将项目添加到集合之前 - 检查集合中该项目的存在性,如果存在 - 不要添加。 – vorrtex 2011-04-04 13:51:15

回答

0

我结束了使用一个CollectionViewSource与分组,然后我将tabcontrol datacontext设置为CollectionViewSource。

private void PopulateTabControl() 
    { 
     DataView = (CollectionViewSource)(this.Resources["DataView"]); 
     AddGrouping();    
     tabcontrol.DataContext = DataView;    
    } 

    private void AddGrouping() 
    { 
     PropertyGroupDescription grouping = new PropertyGroupDescription(); 
     grouping.PropertyName = "categoryID"; 
     DataView.GroupDescriptions.Add(grouping); 
    } 
+0

是否可以查看xaml? – 2012-04-26 11:46:50