Eğer tartışma here bir göz varsa göreceksiniz AllActive'nin amacının, bir çok View/ViewModel'i içeren bir ViewModel'e dahil etmektir. Önceki yorumlarınızdan yola çıkarak sanki beklediğiniz gibi geliyor ama en azından burada referans alacağımı düşündüm.
Daha sonra, Görünümün farklı bölgelerinde 3 farklı ViewModeli etkinleştirmeyi belirtin. Bunu geçmişte ele aldığım şekil, ViewModels'i View (Görünüm) 'de bağlama/referanslama için ayrı özelliklere sahip olmak ve ardından Conductor davranışını elde etmek için hepsini yalnızca Öğelere eklemektir.
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; }
}
Ve MyView'da bunun gibi bir şey olurdu. Tabii ki, bu ContentControls
'u görünümde istediğiniz yere koyabilirsiniz.
<StackPanel>
<ContentControl x:Name="FirstSubViewModel" />
<ContentControl x:Name="SecondSubViewModel" />
<ContentControl x:Name="ThirdSubViewModel" />
</StackPanel>
AllActive
için başka bir yaygın kullanım, öğelerinizin bulunduğu bir listedir. Ancak öğeler aktivasyon gerektiren kendi View/ViewModel'lerine sahip olmayı gerektirecek kadar karmaşıktır. Bu durumda, x:Name
liste denetimini Items
olarak ayarlayacağınız için görünümler için ayrı özelliklere sahip olmanız gerekmeyecektir.
Bundan kurtulmak istediğiniz şey –
ViewModels ile üç kez bir "kapsayıcı" içine yüklemek istiyoruz. – EngineerSpock
Yanıtınız sizin için çalışmış mı? –