C# Caliburn.Micro,来自UserControl和Conductor.OneActive的多个ActiveItem
我有一个问题,但在统计中,我会告诉你我在问什么 我正在用Caliburn.Micro Framework制作一个应用程序。我想做的是使多个C# Caliburn.Micro,来自UserControl和Conductor.OneActive的多个ActiveItem,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,我有一个问题,但在统计中,我会告诉你我在问什么 我正在用Caliburn.Micro Framework制作一个应用程序。我想做的是使多个ActiveItem(作为UserControl)同时显示一个。比如: <ContentControl x:Name="ActiveItem_1"/> <ContentControl x:Name="ActiveItem_2"/> <ContentControl x:Name="ActiveItem_3"/> <
ActiveItem
(作为UserControl
)同时显示一个。比如:
<ContentControl x:Name="ActiveItem_1"/>
<ContentControl x:Name="ActiveItem_2"/>
<ContentControl x:Name="ActiveItem_3"/>
<ContentControl x:Name="ActiveItem_4"/>
那么,如何将这对用户控件命名或编码为一个活动控件呢?我可以使用一个UserControl并更改其大小和边距,但我认为这将比更改UserControls更复杂
谢谢你的建议 如果我理解正确,您希望有4个内容控件,但每次只有一个包含视图。也就是说,您按下按钮1,内容控制1有一个视图,但当您单击另一个按钮时,内容控制1消失,新按钮的内容控制被填充 不能使用ActivateItem,因为ActivateItem要求您具有名为ActiveItem的contentcontrol 您需要执行以下操作:
using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.ViewModels
{
class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
public void LoadLoginPage()
{
ActivateItem(new LoginViewModel());
}
public void LoadTasksPage()
{
//And here i have no idea what to do,
//how to make another UserControl to be ActiveItem
}
}
}
Button1ViewModel ActiveItem_1 = null;
Button2ViewModel ActiveItem_2 = null;
Button3ViewModel ActiveItem_3 = null;
Button4ViewModel ActiveItem_4 = null;
public void Button1()
{
if (ActiveItem_1 == null)
ActiveItem_1 = new Button1ViewModel();
if (ActiveItem_2 != null)
{
ActiveItem_2.TryClose();
ActiveItem_2 = null;
}
if (ActiveItem_3 != null)
{
ActiveItem_3.TryClose();
ActiveItem_3 = null;
}
if (ActiveItem_4 != null)
{
ActiveItem_4.TryClose()
ActiveItem4 = null;
}
}
对其他按钮执行类似操作,为每个按钮打开正确的视图模型,并关闭其他按钮
实际上,您应该执行OneActive,只需要一个名为ActiveItem的contentcontrol,并在每次单击其中一个按钮时填充它。只要不设置显式大小,contentcontrol将根据您的视图调整大小(或者您可以将所有视图设计为相同大小)。这很有意义。我会在几天后(夏季)检查它,如果它有效与否,我会给你反馈。如果它不工作,我将在一个用户控制一次工作。它将更加优雅(对我来说,两个用户控件看起来更容易,我们不需要更改一个用户控件的大小或位置)