wpf - 如何以编程方式将选项卡项添加到 prism 中的选项卡控件

标签 wpf mvvm prism mef

我正在将 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/

相关文章:

c# - Prism ( View 模型): Ensure a command does not get executed multiple times simultaneously

c# - WPF:在不破坏 IsEnabled 的情况下实现 ICommandSource

c# - 在 C# 中从更接近今天的列表中获取下一个日期

wcf - 如何通过 WCF 插入记录 MVVM

listview - 从ListView获取ClickedItem(使用MVVM)

wpf - wpf的 Prism vs mvvm灯

c# - Prism BindableBase.SetProperty()

WPF 和 MVVM。显示和隐藏带有超时的标签

c# - 更新 WPF 桌面桥通用应用程序时无法升级设置

wpf - 将 ViewModel 中的 UserControl 动态添加到 View