2016-07-28 9 views
2

ViewModelごとに1つのビューをインスタンス化する方法はありますか?私は現在、ViewModelごとに1つのビューをインスタンス化する(同じタイプの複数のビュー)

<DataTemplate DataType="{x:Type vm:CustomerViewModel}"> 
    <vw:CustomerView/> 
</DataTemplate> 

で自分のviewmodelsにビューを適用しますが、私の仕事は、ビューは、私が代わりにちょうどのDataContextを変更するのでViewModelにあたりつのビューを作るために私のプログラムを必要とする彼らの焦点テキストボックスの選択を覚えておくようにすることですと。


私はすでにこのための2つの全体の週間検索し、私の質問は、私は(テキストボックスの選択を覚えてどのようにしていない)同じタイプの複数のビューをインスタンス化できるだけで(どのように)かどうかです:)

答えて

1

あなたのビューモデルには選択の状態が含まれている必要があります。これはビューにバインドする必要があります。その後、DataTemplateはうまく動作します。

+0

アイデアをお寄せいただきありがとうございます。私はすでにそれを試みました...私の質問は、複数のビューをインスタンス化することが可能かどうかでした...正直に言うと、それはパフォーマンスにも影響を及ぼさないだろうと私は思っています。 – hali

+0

確かに、それはまさにラウンドアバウトなので、すべての関連付けを追跡する必要があります。 –

1

これを処理する方法は、ViewModelをコード内のxamlへの入力にすることです。例えば:私はベースウィンドウのVMからウィンドウを開いたときに

public partial class AddMember : Window 
{ 
    StructureGeneratorVM mainVM = null; 
    public AddMember(object vm) 
    { 
     mainVM = (StructureGeneratorVM)vm; 
     DataContext = mainVM; 
     InitializeComponent(); 
    } 
} 

はその後、私はthisに渡し、その後、私のプログラムのすべてのウィンドウは、(元メインウィンドウに属している)同じVM

に取り組んでいます

これはあなたが求めていたものですか?

+0

私の問題は、WPFは常にビュータイプのオブジェクトを1つだけ作成し、次にビューの「別のインスタンス」に切り替えるとDataContextを変更するということです。それを期待する)。私の問題が解決されることを変更する汚れたトリックがあった場合... – hali

+0

ビューの「別のインスタンス」を作成するときに、作成と一緒にdatacontextを渡しますか? – Kikootwo

+0

はい、もちろんですが、ビューの別のインスタンスを作成する方法は?_上記のようにDataTemplateごとにViewModelsにビューを適用すると、作成するビューオブジェクトは1つだけで、DataContextのみが変更されます代わりに別のビュー) – hali

関連する問題