我有 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));
}
我ToggleButton
在MainWindowView.XAML
那个加载中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
按钮加载TabControl
两个UserControler
?现在,我正在加载new AddNewTaskViewModel()
(它是UserControl
,它按照我的意愿正确加载)。如何使TabControl
与Caliburn.Micro
将存储AddNewTaskViewModel
和AddNewProjectViewModel
?如何TabControl
在两个不同的之间切换UserControl
?我有一个问题要开始,因为我不知道如何从这个问题开始。感谢您的任何建议
编辑
在这里,我将展示我的完整 ViewModel
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));
}
编辑2
我得到了上下文,但我想实现:
创建另一个Vm
类,它将存储我User Controls
想在我的中使用的TabControl
:
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));
}
TabControl
在视图中添加一个命名的“Items”:
<TabControl x:Name="Items" />
...以及另Button
一种将其他类型添加Screen
到Items
集合中的方法:
public class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
public void LoadAddNewTask() => this.ActivateItemAsync(new AddNewTaskViewModel());
public void LoadAddNewProject() => this.ActivateItemAsync(new AddNewProjectViewModel());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句