2011-08-22 1 views
4

그래서 나는 정의 부분에서 내가의 라인을 따라 뭔가를 포함 할 필요가 있음을 확신 :사용 방법 xaml 내에 <T>리스트?

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

하지만 난 그냥 ??? '의 자리에 넣어 모르겠어요.

는 내가 코드와 함께하고 싶은 것은 이것이다 : 나는 objectDataProvider 전화를 걸 때 그래서

<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> 

, 나는 그것 (CreateNodes)를 호출하는 방법의 목록을 통과 할 수 ...

어떻게해야합니까?

감사합니다.

수정 사항 일 수 있습니까?

난 그냥 대신 목록에 전달하는, 방법에 넣고는, 그냥 앱 변수

... 나는 응용 프로그램 변수가 비록의 assembly 부분

List<TNode> existingNodes; 

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

XAML이이 시점에서 제네릭을 지원한다고 생각하지 않습니다. –

+0

관련 어셈블리는'mscorlib.dll'이지만, XAML에서 한 번도 해 본 적이 없으며 부분적인 답을 남기고 싶지 않기 때문에 이것을 주석으로 남겨두고 있습니다. 나는 XAML이 generics를 지원하지 않는다는 것을 알고있다. –

+0

그래서 나는 무엇을하려고합니까? :(또는 응용 프로그램 변수를 사용하여 목록을 전달해야합니까? – Toadums

답변

5

나쁜 경우 몰라요 XML 네임 스페이스 선언은 mscorlib이됩니다.

그러나 어쨌든 XAML은 제네릭 (*)을 지원하지 않으므로 수행 할 수 없습니다. 대신, 당신은 List<T>을 상속하는 클래스를 만들고 XAML에서 사용할 수 :

class ListOfFoo : List<Foo> 
{ 
} 

(1) 사실 는 XAML 2009 년에 지원되지만 XAML 2009의 대부분은 컴파일에서 지원되지 않습니다 제네릭 XAML. 자세한 내용은 this question을 참조하십시오.

+0

위의 편집 작업을 수행했습니다. 제안한 방식 (클래스 작성)이 더 나은지 또는 방법은 응용 프로그램 변수와 함께 했나요? :) – Toadums

+0

@Toadums, 아마도 가장 깨끗한 방법은 아니지만 작동해야합니다. 예 –

+0

그런 클래스를 작성한 후에도 [XAML 파일의 루트 요소로 사용할 수 없습니다.] https://msdn.microsoft.com/en-us/library/ms747086(v=vs.110).aspx). (왜 이것이 작동하지 않는지 이해하려고 오후를 보냈습니다.) –