使用ItemsSource时添加额外的项目
在我正在构建的项目中,我有一个TabControl
,我想通过ItemsSource
显示一系列选项卡。 我还需要在TabControl
的开头有一些“概述”选项卡,它们不能位于ItemsSource
。
实现这一目标的最佳方法是什么,我能想到的唯一方法是在我的XAML中使用我的概述选项卡,只需通过代码手动添加选项卡项而不是使用ItemSource
,这是最好的方法。
您可以使用CompositeCollection
( MSDN )来完成此任务:
SpecialItem
对于任何人发现使用CollectionContainer使用HeaderTemplate / ContentTemplate的方法:
首先在ViewModel中添加Type属性
public Type Type { get { return this.GetType(); } }
使用Style.Triggers为Type属性标识的动态选项卡设置HeaderTemplate / ContentTemplate
引用Anderson Imes的回答: https : //stackoverflow.com/a/1348369/1196637
您可以使用CompositeCollection 如何将通用项添加到绑定到WPF中的集合的ComboBox
//Not bound something
代码背后:
cc.Collection=yourObservableCollection
遗憾的是,您无法将ItemsSource绑定与显式添加的Items集合对象混合使用。 因此,您有两个选择,可以手动将固定项目和绑定列表中的项目添加到Items集合,也可以将ItemsSource绑定到包含一组固定对象和绑定集合项目的集合。 在任何一种情况下,最大的问题可能是在数据发生变化时进行更新 – 确保删除/添加正确的项目并正确更新UI。