我正在将 Prism 与 MEF 一起使用,并且我想动态地将选项卡项添加到选项卡控件中而不违反 Prism - MVVM - MEF 规则。 有人可以用简单的步骤/示例向我展示如何做到这一点
最佳答案
TabControl 可以像许多其他控件一样绑定(bind)到集合。这是我在聊天消息程序中使用的选项卡控件的示例。
<TabControl ItemsSource="{Binding Path=Rooms, Mode=OneWay}" SelectedItem="{Binding Path=SelectedRoom, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=RoomName}" x:Name="Header" Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
//in here is where you put controls for what you want the tabs to look like.
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
因此,在这个示例中,我有一个名为“Rooms”的自定义数据类型“ChatRoom”的集合,它具有诸如 RoomName 之类的属性。每当用户创建一个新房间时,它就会添加到 Rooms 集合中,并创建一个新的 tabitem。所以在我的 viewModel 中:
private ObservableCollection<ChatRoom> _Rooms;
public MainWindowViewModel()
{
this._Rooms = new ObservableCollection<ChatRoom>();
}
public ObservableCollection<ChatRoom> Rooms
{
get { return this._Rooms; }
}
关于wpf - 如何以编程方式将选项卡项添加到 prism 中的选项卡控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14357503/