使用 TabControl (MVVM) 显示不同的 ViewModel

赞主

我编写了一个具有不同 ViewModel 的应用程序,一个用于用户、组和机器。每个 ViewModel 都有自己的 View。我正在使用 Caliburn.Micro。现在我在带有按钮的视图之间切换,如下所示:

XAML:

     <StackPanel Orientation="Horizontal">
                <Button VerticalAlignment="Top" Margin="5" Height="30" x:Name="ShowUsers" Content="Users"/>
                <Button VerticalAlignment="Top" Margin="5" Height="30" x:Name ="ShowGroups" Content="Groups"/>
                <Button VerticalAlignment="Top" Margin="5" Height="30" x:Name ="ShowMachines" Content="Machines"/>
            </StackPanel>
<ContentControl Grid.Row="1" x:Name="ActiveItem"/>

C#:

public AdminViewModel(GroupManagementViewModel groupManagementViewMode, MachineManagementViewModel machineManagementViewModel, UserManagementViewModel userManagementViewModel)
        {
            this._groupManagementViewModel = groupManagementViewMode;
            this._machineManagementViewModel = machineManagementViewModel;
            this._userManagementViewModel = userManagementViewModel;
        }

        protected override void OnActivate()
        {
            base.OnActivate();
            ShowUsers();
        }

        public void ShowUsers()
        {
            ActivateItem(_userManagementViewModel);
        }

        public void ShowGroups()
        {
            ActivateItem(_groupManagementViewModel);
        }

        public void ShowMachines()
        {
            ActivateItem(_machineManagementViewModel);

我想使用 TabControl 更改这些按钮,我尝试了几件事,现在我的代码如下所示:

XAML(带 Tabcontrol):

<TabControl>
            <TabItem Header="User" x:Name="ShowUsers">
               
            </TabItem>
            
            <TabItem Header="Groups" x:Name="ShowGroups">
                
            </TabItem>
            <TabItem Header="Machines" x:Name="ShowMachines">
              
            </TabItem>
           
        </TabControl>
        <ContentControl Grid.Row="1" x:Name="ActiveItem"/>

所以我在我的 ViewModel 中给了 TabItems 命令的 x:Name 但它只为每个 TAB 显示相同的视图模型

我会非常感谢每一个提示。

此致

赞恩

毫米8

使用 Caliburn.Micro,视图中的 XAML 标记应该像这样简单:

<TabControl x:Name="Items" />

然后视图模型应该继承Conductor<T>.Collection.OneActive并将选项卡视图模型添加到Items属性中:

public class AdminViewModel : Conductor<object>.Collection.OneActive
{
    public AdminViewModel(GroupManagementViewModel groupManagementViewMode, 
        MachineManagementViewModel machineManagementViewModel, 
        UserManagementViewModel userManagementViewModel)
    {
        Items.Add(groupManagementViewMode);
        Items.Add(machineManagementViewModel);
        Items.Add(userManagementViewModel);
    }
}

选项卡视图模型应该从Screen. 然后您可以设置DisplayName它们属性来修改选项卡标题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用MVVM删除与所选控件不同的TabControl选项卡

MVVM:根据用例使用不同的 ViewModel 实现

使用TabControl和MVVM时绑定丢失

使用数据绑定从ViewModel显示/隐藏ProgessBar-MVVM

具有多个ViewModel和更改选项卡的C#WPF MVVM TabControl

使用TabControl和MVVM在WPF中进行正确的数据绑定

使用 MVVM 架构的 ViewModel 注入(在 View 内)

MVVM使用代码隐藏或viewmodel操作视图

每当我在两个标签之间切换时,都会实例化WPF TabControl MVVM ViewModel

如何将WPF TabControl ContentTemplate绑定到不同ViewModel的可观察集合

WPF MVVM:将不同的ViewModel绑定到每个TabItem吗?

Android:MVVM 是否可以从 ViewModel 显示消息(toast/snackbar 等)

MVVM 显示器 OberservableCollection<ViewModel> 与未知的 UserControl

WPF MVVM Caliburn显示特定ViewModel中的所有ErrorMsg

使用接口以MVVM方式在viewModel之间进行通信

MVVM当ViewModel使用异步时如何设置datacontext

C#MVVM使用NotifyIcon从代码背后调用ViewModel方法

通过MVVM方法使用DataBinding和ViewModel创建RecycleView Adapter

使用 mvvm 将 uitextfield 值绑定到 viewModel

Swift MVVM-使用协议处理ViewModel事件

MVVM:尝试使用LiveData加载数据时,ViewModel为null

使用MVVM时,如何在子ViewControllers中扩展ViewModel?

如何使用MVVM在ViewModel中附加行为

MVVM和更新ViewModel

Android的ViewModel和MVVM

Mvvm模型ViewModel

如何使用 Caliburn.Micro 和不同的 UserControl 制作 TabControl

MahApps使用MVVM显示SimpleChildWindow

如何使用标签隐藏/显示 TabControl C# 中的控件