【发布时间】:2019-05-23 12:26:32
【问题描述】:
我的 TabControl 有问题,我什至不知道如何开始。
我有我命名为MainViewModel 的根视图。 Csharp 类看起来像这样:
public class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
//i have couple of ToggleButtons to load diffrent UserControls, LoadAddNewPage
//is one of them
public void LoadAddNewPage() => this.ActivateItem(new AddNewTaskViewModel(params));
}
我在MainWindowView.XAML 中有ToggleButton,正在加载LoadAddNewTaskPage。
<ToggleButton x:Name="LoadAddNewPage"
Grid.Column="4"
Width="50" Height="50"
Content=""
Foreground="White"
BorderThickness="0"
BorderBrush="{x:Null}"
Background="#FF085078" Margin="20,3,0,3" Grid.ColumnSpan="3">
<!-- i deleted data triggers here -->
</ToggleButton>
正如您在上面看到的,它使用表单加载 AddNewTaskViewModel 以将新项目添加到我的数据库/列表(或其他)。
AddNewTaskView.xaml 很简单 UserControl 带有文本框等。
我的问题是,如何准备我的LoadAddNewPage 按钮以加载带有两个UserControler 的TabControl?现在,我正在加载new AddNewTaskViewModel()(它是UserControl,它可以按我的意愿正确加载)。如何使用Caliburn.Micro 制作TabControl 来存储AddNewTaskViewModel 和AddNewProjectViewModel?如何在两个不同的UserControl 之间切换TabControl?我有一个问题要开始,因为我不知道如何从这个问题开始。感谢您的任何建议
编辑
在这里我将展示我的完整视图模型
public class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
protected override void OnViewLoaded(object view) => Show.LoginBox(this.loggedUser);
public void LoadUserInfoPage() => this.ActivateItem(new UserInfoViewModel(this.loggedUser));
public void LoadTaskManagerPage() => this.ActivateItem(new TaskManagerViewModel(this.loggedUser, this.repository));
public void LoadNotificationsPage() => this.ActivateItem(new NotificationsViewModel(this.repository));
//here, i want to trigger TabControl with two VMs to choose
public void LoadAddNewTaskPage() => this.ActivateItem(new AddNewTaskViewModel(this.loggedUser, this.repository));
}
EDIT2
我了解上下文,但我想实现:
创建另一个Vm 类,它将存储我想在我的TabControl 中使用的User Controls:
public class TabControlViewModel
{
//how to store two VMs that i will use to my TabControl here?
}
在MainViewModel:
public class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
//activate TabControlViewModel that will store AddTaskVM and AddProjectVM
//this vm will display on my `TabControl` in xaml in `MainWindowView.xaml`
public void LoadAddNewPage() => this.ActivateItem(new TabControlViewModel(params));
}
【问题讨论】:
-
你不能再添加一个
Button。或者您如何知道何时添加AddNewTaskViewModel和AddNewProjectViewModel? -
是的,我可以添加新按钮来激活新项目,但在我的项目中,我想尝试做
TabControl,这将加载不同的ViewModel,取决于TabControl中的哪个按钮我会点击
标签: c# wpf xaml caliburn.micro