5

したがって、定義部分に次の行に沿って何かを含める必要があると確信しています。

xmlns:s="clr-namespace:System.Collections.Generic;assembly=?????" 

しかし、???の代わりに何を入れればよいかわかりません。

私がコードでやりたいことはこれです:

<UserControl.DataContext>
    <ObjectDataProvider 
          MethodName="CreateNodes"
          ObjectType="{x:Type local:TreeViewModel}" >
        <ObjectDataProvider.MethodParameters>
            <s:List<T>>
                  {Binding Nodes}
            </s:List<T>>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</UserControl.DataContext>

そのため、objectDataProvider 呼び出しを行うときに、呼び出しているメソッド (CreateNodes) にリストを渡すことができます...

どうすればこれを行うことができますか?

ありがとう!

編集 - 修正できますか?

これをメソッドに入れるだけで、リストに渡すのではなく、単なるアプリ変数です...アプリ変数が悪いかどうかはわかりませんが

  List<TNode> existingNodes;

  if (Application.Current.Properties.Contains("ExistingNodes")) existingNodes = Application.Current.Properties["ExistingNodes"] as List<TNode>;
  else existingNodes = new List<TNode>();
4

2 に答える 2

6

assemblyXML 名前空間宣言の部分はmscorlib.

とはいえ、XAML はジェネリクス (*) をサポートしていないため、それを行うことはできません。List<T>代わりに、継承して XAML で使用するクラスを作成できます。

class ListOfFoo : List<Foo>
{
}

(1) 実際にはジェネリックXAML 2009 でサポートされていますが、XAML 2009 のほとんどはコンパイルされた XAML ではサポートされていません。詳細については、この質問を参照してください。

于 2011-08-22T19:07:36.467 に答える