c# - Caliburn Micro Conductor.Collection.AllActive 不工作
问题描述
我尝试使用带有 Conductor.Collection.AllActive 的 Caliburn Micro 在应用程序中激活多个窗口
遵循的步骤:
从 Conductor.Collection.AllActive 继承 MainHomeViewodel
1)创建的属性
public ExploreViewModel Explorer {
get; private set;
}
2) 使用名称作为属性名称创建 ContentControl
<ContentControl x:Name="Explorer" />
3)具有属性的激活视图模型
Explorer = new ExplorerViewModel();
ActivateItem(Explorer );
执行上述代码后,它会实例化 ExplorerViewModel 但不会转到 View 的构造函数或显示 View 。
上述实现有任何问题,或者我需要做更多的事情来激活项目。
请帮忙!
谢谢。
编辑
public class MainHomeWindowViewModel : Conductor<IScreen>.Collection.AllActive
{
protected override void OnInitialize()
{
base.OnInitialize();
ShowExplorer();
}
public void ShowExplorer()
{
Explorer = new ExplorerViewModel();
ActivateItem(Explorer );
}
}
解决方案
Conductor.Collection.AllActive
使用Items
财产。如果要一次显示多个屏幕,则必须将它们添加到Items
属性中。
然后,因为您的视图存储在Items
属性中,您希望将视图绑定到Items
. 这是一个例子:
导体:
public class ShellViewModel : Conductor<IScreen>.Collection.AllActive
{
public ShellViewModel()
{
Items.Add(new ChildViewModel());
Items.Add(new ChildViewModel());
Items.Add(new ChildViewModel());
}
}
指挥者视图(注意,因为我们显示了我们不想使用的项目集合ItemsSource
)ContentControl
:
<Grid>
<StackPanel>
<ItemsControl x:Name="Items"></ItemsControl>
</StackPanel>
</Grid>
子画面:
public class ChildViewModel : Screen
{
}
子视图:
<Grid>
<Border Width="50" Height="50" BorderBrush="Red" BorderThickness="5"></Border>
</Grid>
编辑:关于评论中的讨论,这里是你可以IWindowManager
用来显示多个窗口的方法:
public class ShellViewModel : Screen
{
public ShellViewModel(IWindowManager windowManager)
{
var window1 = new ChildViewModel();
var window2 = new ChildViewModel();
windowManager.ShowWindow(window1);
windowManager.ShowWindow(window2);
window1.TryClose();
}
}
推荐阅读
- azure - 无法使用变量在 Azure CLI 中设置 EventGrid 订阅高级筛选器
- google-app-engine - 是否可以使用 Google Cloud Logging 绘制历史数据图表?
- reactjs - React useState 无法分配 setState
- c# - Serilog 自定义输出模板
- python - 使用python进行网络抓取时如何计算缩写列表的长度
- c# - Apache Ignite.NET 十进制幅度溢出
- awk - 通过将一列中的字符串与另一个变量中的字符串匹配来子集变量
- python - 使用 boto3 创建 EBS 卷并将其附加到 EC2 实例
- laravel - 使用 Laravel 7 HTTP 客户端和 OAuth 订阅者
- unity3d - 根变换位置/旋转选项未显示在 fbx 文件的动画选项卡中