0

次の xaml があるとします。

<UserControl x:Class="MainView" ...>
    :
    <my:ChildView />
    :
</UserControl>

ChildView がインスタンス化されると、タイプ ChildViewModel のオブジェクトが自動的に作成され、それがその DataContext にアタッチされます。ChildViewModel にはプロパティ「Abc」があります。

MainView には、その DataContext としてバッキング MainViewModel オブジェクトがあります。MainViewModel にもプロパティ「Def」があります。

プロパティMainViewModel.Defの値をChildViewModel.Abcに送信するxaml経由の方法はありますか?

4

2 に答える 2

0

ビューモデル間の通信は、メッセンジャー/メディエーターまたはイベントアグリゲーターを介して行われます。「xamlを介して」道を進む必要はありません

編集:私はviewmodelfristが好きなので-私は私のプロジェクトでこれを行います

mainviewmodelは、childviewmodelのインスタンスを保持します。ChildViewはChildViewmodelを作成しなくなりました。

<UserControl x:Class="MainView" ...>
  <UserControl.Resources>
   <DataTemplate DataType="{x:Type local:ChildViewmodel}">
    <my:ChildView />
   </DataTemplate>
  </UserControl.Resources>
 :
  <ContentPresenter Content="{Binding MyChildView"} />
  :
</UserControl>

いいえ、mainviewmodelにインスタンスがあるため、Defプロパティ値をchildviewmodelに設定するだけで済みます。

于 2012-07-27T06:03:36.467 に答える
0

親子ビューのような場合、子ビューはViewmodel自体を作成するのではなく、その子ビューモデルをメインビューモデルのプロパティとして作成し、子ビューのデータコンテキストを次のように設定します。これで、メイン ビューモデルが子ビューモデルのプロパティにアクセスできるようになります。

<UserControl x:Class="MainView" ...>
:
<my:ChildView DataContext{Binding ChildViewModelProperty}/>
:
</UserControl>
于 2012-07-27T08:39:42.463 に答える