ちょっと変だけど、実用的なサンプルはどこにも見つからない。誰でも簡単な導体例<T>.Collection.AllActiveの使用例を提供できますか?
ところで、これが重要なのであれば、私はViewModel-first approach(WPF)を使用しています。
ありがとうございます。
ちょっと変だけど、実用的なサンプルはどこにも見つからない。誰でも簡単な導体例<T>.Collection.AllActiveの使用例を提供できますか?
ところで、これが重要なのであれば、私はViewModel-first approach(WPF)を使用しています。
ありがとうございます。
あなたが議論hereを見てみると次のように表示されますAllActiveの目的は、複数のViews/ViewModelを含むViewModelに組み立てることです。あなたの前のコメントから判断すると、これがあなたが期待していたもののようですが、私はここで少なくともそれを参照していたはずです。
次に、ビューのさまざまな領域で3つの異なるViewModelをアクティブにすることについて説明します。これまで私がこれを処理してきた方法は、Viewの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では、このようなことがあります。もちろん、ビューに希望する場所にこれらの文字を入力することもできます。
<StackPanel>
<ContentControl x:Name="FirstSubViewModel" />
<ContentControl x:Name="SecondSubViewModel" />
<ContentControl x:Name="ThirdSubViewModel" />
</StackPanel>
AllActive
の別のよくある用途は、アイテムのリストがある場合です。しかし、項目は、起動を必要とする独自のView/ViewModelsを持つことを保証するのに十分複雑です。その場合は、リストコントロールのx:Name
をItems
に設定するだけで、ビューの個別のプロパティを設定する必要はありません。
あなたは、以下のように実装するのですTabViewModel
の場所でTreeViewModelを使用することができますShellView
<DockPanel>
<Button x:Name="OpenTab"
Content="Open Tab"
DockPanel.Dock="Top" />
<TabControl x:Name="Items">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DisplayName}" />
<Button Content="X"
cal:Message.Attach="DeactivateItem($dataContext, 'true')" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
</DockPanel>
のViewModel
public class ShellViewModel : Conductor<IScreen>.Collection.AllActive {
System.Collections.Generic.List<TabViewModel> tabViewModelCollection = new System.Collections.Generic.List<TabViewModel>();
public void ActiveAllTab() {
foreach (var tabViewModel in tabViewModelCollection)
{
ActivateItem(tabViewModel);
}
}
}
ShellViewの外観はどうですか? – EngineerSpock
私の答えは –
に更新されました。これはTabControlでのみ有効ですか? – EngineerSpock
これから何を達成したいか –
ViewModelsで3つのビューを1つの「コンテナ」に読み込みたいとします。 – EngineerSpock
以下の回答はあなたのために働いたのですか? –