2009-04-16 10 views
1

XAMLを使用してビジネスドメインの semantic modelを構成するカスタムタイプのグラフをロードしようとしています。XAMLでロードされたカスタムタイプがルートオブジェクトへの参照を取得する方法

私がしたいことの一つは、ツリーのより深いオブジェクトからグラフの「ルートオブジェクト」への参照を取得できることです。私は、ルートオブジェクトをシングルトンとして持つような野蛮な手法に頼る以外に、これを行う簡単な方法を見つけることはできません。

アイデア?

答えて

1

これはXAMLに固有の問題であるかどうかわかりません。すべてのXAMLが実行しているのは、 "子"オブジェクトをインスタンス化し、それらを "親"オブジェクトのコレクションプロパティに追加することです。あなたのようなものだったのであれば:

<my:Category Name="Products"> 
    <my:Category.Subcategories> 
     <my:Category Name="Clothing" /> 
     <my:Category Name="Jewellery" /> 
    </my:Category.Subcategories> 
</my:Category> 

を...そしてあなたは、2つのサブカテゴリと「製品」カテゴリで終わるだろう。サブカテゴリを追加すると、そのサブカテゴリの「所有者」への参照がどこかに保存されるように、「カテゴリ」クラスをコード化することはあなた次第です。私はおそらくカスタムコレクションタイプを使用します(追加されるオブジェクトの "親"または "所有者"プロパティを設定するためにAddメソッドとRemoveメソッドをオーバーライドします)。

+0

ありがとうございました。私が持っている問題は、XAMLがコレクション型のプロパティのために働く方法は、XamlReaderを "所有する"オブジェクトに渡す方法がないことです。 – Raoul

+0

しかし、 "Subcategories"プロパティが定義した型(ICollectionを実装している)であれば、 "Add"メソッドが呼び出されたときに好きなことをすることができます。これがXAMLの機能です。それぞれの項目でAddメソッドを呼び出しますか?私は確かに分かりません。 –

+0

絶対必要なAdd()メソッドを作成できます。ただし、XamlReaderで呼び出すようにして、限定されたインターフェイスセットで定義されたAdd()メソッドのみを検索します。これらのメソッドはいずれも親オブジェクトの受け渡しを容易にするAdd()をサポートしていません。 – Raoul

関連する問題