2011-06-23 4 views
1

多くのビューモデルを表示するgraphがあります。グラフ内のこれらのビューモデルの外観は、一連のDataTemplatesによって管理されます。DataTemplateから選択したアイテムを設定する

グラフのビューモデルの1つが選択されているときに詳細がUIの別の部分に表示されるように、マスター/詳細表示を行いたいとします。私が抱えている問題は、グラフからマウスクリックをつかむことです。

"SelectedItem"というグラフにプロパティを追加してから詳細ビューをバインドできますが、DataTemplateのクリックでSelectedItemベースを設定する方法がわかりません。

グラフに示す典型的なのDataTemplate:

<!-- The master control --> 
<Grid> 
    <Grid.Resources> 
     <DataTemplate DataType="{x:Type prove:JobVM}"> 
       <!-- the view of this type in the Graph --> 
     </DataTemplate> 
    </Grid.Resources> 

    <prove:CustomGraph Graph={Binding JobGraph}/> 
</Grid>       

<!-- The detail control --> 
<ContentControl Content="HOW DO I SET CONTENT TO BE THE SELECTED ITEM IN THE GRAPH?" > 
    <ContentControl.Resources> 
     <DataTemplate DataType="{x:Type prove:JobVM}"> 
      <!-- the detail view --> 
     </DataTemplate> 
    </ContentControl.Resources> 
</ContentControl> 

任意のアイデア?

答えて

1

グラフにMouseLeftButtonDownイベントハンドラを追加し、タグを介してハンドラで要素のチェックを行うと、datacontextを取得してビューのviewmodelに応じてプロパティを更新できます。次に、ビューの詳細セクションをこのプロパティにバインドできます。

希望します。

+0

ありがとう、これは動作します。イベントハンドラでDataContextをキャストして取得するのではなく、コマンドまたはマークアップでこれを行う方法があれば、どんな考えですか?私はそれを好むだろうが、私は私が開発していないカスタムコントロールを使用していることを理解しているので、これは難しいかもしれません。 –

0

RelativeSource.TemplatedParentプロパティを使用してSelectedItemを取得できるはずです。

+0

わかりません。上記の説明を参照してください。 RelativeSource.TemplatedParentプロパティはどのように使用しますか? –

関連する問題