这有点奇怪,但我真的找不到任何地方的工作示例。
顺便说一句,如果这很重要,我将使用 ViewModel-first 方法(在 WPF 中)。
先感谢您。
如果你看一下讨论here https://caliburnmicro.codeplex.com/discussions/240895您将看到 AllActive 的目的是将多个 Views/ViewModel 组合成一个包含 ViewModel。从您之前的评论来看,这似乎是您所期待的,但我想我至少会在这里引用它。
然后您提到在视图的不同区域激活 3 个不同的 ViewModel。我过去处理这个问题的方法是使用单独的属性来绑定/引用视图中的 ViewModel,然后将它们全部添加到 Items 中以获得 Conductor 行为。
public sealed class MyViewModel : Conductor<Screen>.Collection.AllActive
{
public MyViewModel(IMagicViewModelFactory factory)
{
FirstSubViewModel = factory.MagicallyGiveMeTheViewModelIWant();
SecondSubViewModel = factory.MagicallyGiveMeTheViewModelIWant();
ThirdSubViewModel = factory.MagicallyGiveMeTheViewModelIWant();
Items.Add(FirstSubViewModel);
Items.Add(SecondSubViewModel);
Items.Add(ThirdSubViewModel);
}
public Screen FirstSubViewModel { get; private set; }
public Screen SecondSubViewModel { get; private set; }
public Screen ThirdSubViewModel { get; private set; }
}
在 MyView 中你会看到这样的东西。当然你可以把这些ContentControls
视图中您想要的任何位置。
<StackPanel>
<ContentControl x:Name="FirstSubViewModel" />
<ContentControl x:Name="SecondSubViewModel" />
<ContentControl x:Name="ThirdSubViewModel" />
</StackPanel>
另一个常见用途是AllActive
是当你有一个项目列表时。但这些项目足够复杂,足以保证拥有自己的需要激活的视图/视图模型。在这种情况下,您不必为视图设置单独的属性,因为您只需设置x:Name
列表控件的Items
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)