2011-07-30 2 views
1

입력 매개 변수를 기반으로 그리드를 생성하는 라이브러리가 있습니다. 그리드에는 입력을 기반으로 다른 컨트롤이 포함될 수 있습니다. 각각의 목록 항목이 자체 생성 된 Grid를 가져올 ListBox를 만들고 싶습니다. 이게 가능합니까? 예를 들어 Button과 같은 Content 속성을 노출하는 패널 파생물 (Gird, StackPanel 등)을 찾을 수 없습니다.바인딩의 내용이있는 격자

답변

0

어떻게 그리드를 작성하기 위해 데이터를 전달합니까?

종속성 속성을 통해 데이터를받는 컨트롤이 있다고 가정합니다. 나는. MyData가 Dependency Property 인 MyControl.MyData 속성과 같은 것이 있습니다. 이 경우 DataTemplate을 사용해보십시오.

ObservableCollection을 만듭니다. 각 항목은 그리드를 작성하기 위해 전달해야하는 데이터입니다.

ListBox 인스턴스에서 컨트롤로 구성된 DataTemplate을 사용하려면 ItemTemplate을 정의하십시오.

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <myAssembly:MyControl MyData="{Binding }"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
0

@XAMeLi는 그의 대답에 돈을 거의 권리 - 무엇 좋을 것이다 것은 DataTemplateSelector, 각 데이터 항목이 다른 템플릿 (또는 생성 된 그리드)가 할 수있는 방법입니다. 클래스에서 DataTemplateSelector을 확장하면 별도의 컨트롤 또는 동적 DataTemplate으로 적절한 그리드 레이아웃을 쉽게 생성하거나로드 할 수 있습니다.

좋은 예를 보려면이 기사를 참조하십시오. WPF Tutorial - How To Use A DataTemplateSelector

관련 문제