У меня проблема с 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));
}
EDIT2
Я получил контекст, но я хочу достичь:
создать еще один 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));
}