Eng*_*ock 6 wpf caliburn.micro
这有点奇怪,但我真的无法在任何地方找到一个有效的例子.
顺便说一下,如果这很重要的话,我正在使用ViewModel-first方法(在WPF中).
先感谢您.
Pet*_*son 12
如果你看一下这里的讨论,你会发现AllActive的意图是将几个Views/ViewModel组合成一个包含ViewModel.从你之前的评论来看,似乎这就是你所期待的,但我想我至少会在这里引用它.
然后,您可以在View的不同区域激活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; }
}
Run Code Online (Sandbox Code Playgroud)
在MyView中你会有这样的东西.当然,您可以将它们放在ContentControls
视图中的任何位置.
<StackPanel>
<ContentControl x:Name="FirstSubViewModel" />
<ContentControl x:Name="SecondSubViewModel" />
<ContentControl x:Name="ThirdSubViewModel" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
另一个常见用途AllActive
是当你有一个项目列表.但这些项目非常复杂,需要保证自己的View/ViewModel需要激活.在这种情况下,您不必具有视图的单独属性,因为您只需将x:Name
列表控件设置为Items
.