2011-06-22 24 views
0

私は会社の従業員のリストを表示するWPFアプリケーションを作成しています。私のビューモデルは基本的にツリーです。各企業は、従業員のリストを持っており、各従業員がアドレスを持っている:親コントロールからWPFの子孫にデータを渡す方法

Company 
    Employee 
     Address 

会社オブジェクトの対応するビューがItemsControlから派生したCompanyViewControlです。コントロールテンプレートでは、Itemsを従業員のリストにバインドし、ItemsPresenterでカスタムEmployeeViewControlを使用して各従業員のコンテンツを表示します。

すべてが良いです。

ここで、CompanyViewControlからEmployeeViewControlに特別なオブジェクトを渡す必要があります。テンプレートで定義または作成されたEmployeeViewControlでこれをどのように行うことができますか?作業をもっと複雑にするために、従業員のリストはバックグラウンドスレッドにロードされます。したがって、新しい従業員がフェッチされると、CompanyViewControlは、追加されたばかりの新しいコントロールにオブジェクトを渡す必要があります。

これは、ビューモデルの単一インスタンスから複数のビュー(CompanyViewControlの複数インスタンス)を作成できるようにする必要があります。オブジェクトが基本的にCompanyViewControlの親コントロールであるとします。

答えて

0

は私が正しくあなたを理解しています確認していない、まだ心に来る最初の質問は「あなたがHierarchicalDataTemplateを使用していない理由は?」。これは、一般に、私が個人的に説明するようにツリー構造をテンプレート化する方法です。

親コントロールから子コントロールに情報を渡す方法として、親子関係のバインディングをタイプごとに作成することができます。これは、論理ツリー内ではまだ親であるため、コントロールでも機能します。

ex。

<local:ParentControl Tag="Something..can be a binding"> 
    <local:ChildControl Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type local:ParentControl}, Mode=FindAncestor}}"/> 
</ContentControl> 

これが役立ちます。

0

たとえば、RelativeSourceを使用できます。

<Binding Path="SpecialCompanyInfo" RelativeSource="{RelativeSource TemplatedParent}"> 
関連する問題