2010-05-10 4 views
10

ListBoxItem에 대해 DataTemplate 역할을하는 WPF 응용 프로그램 내에서 사용자 정의 컨트롤을 만들려고합니다. 사용자는 4 TextBlock과 함께 그리드를 제어합니다. 이 컨트롤에는 시각적 보조를 위해 다른 모양과 이미지가 포함되어 있으므로이 질문의 코드에서 명확하게 구분하지 않습니다.WPF 응용 프로그램 내에서 DataTemplate으로 사용자 정의 컨트롤 사용

mainwindow.xaml에 사용자 정의 컨트롤을 놓았을 때 컨트롤이 표시되고 올바르게 바인딩 된 필드가 데이터 소스의 첫 번째 레코드를 가리키고 있습니다. 내가 원하는 것은이 컨트롤을 데이터베이스 내의 각 레코드에 대한 목록 상자 또는 랩 패널 내에서 반복적으로 렌더링되도록하는 것입니다.

사용자 컨트롤을 가져 오는 방법에 대한 포인터 나 샘플을 내게 제공 할 수있는 사람은 ListBox 컨트롤/다른 패널 내에서 DataTemplate으로 렌더링 할 수 있습니까?

최대 요점은 다음과 같습니다. 미리 알려 주셔서 감사합니다. DataTemplate이 실제로 ListBox에 할당되지 않고 있음

<!--within Window.Resource --> 
<DataTemplate x:Key="myActivity"> 
     <local:ucActivityItm /> <!--usercontrol --> 
</DataTemplate> 

<!-- Listbox within the window --> 
<ListBox HorizontalAlignment="Stretch" ItemTemplate="{DynamicResource myActivity}" VerticalAlignment="Stretch"> 
<ListBoxItem> 
<!-- control also added for testing to ensure it rendered out--> 
<local:ucActivityItm /> 
</ListBoxItem>   
</ListBox> 

답변

13

.

1 : ListBox

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <local:ucActivityItm /> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

와 자료 섹션에서 템플릿을 교체 세 가지 방법이있다.
2 : 다소 관련 :

<ListBox ... ItemTemplate="{StaticResource myActivity}"> 

3 : ListBox의 내용이 무엇이든 위의 DataTemplate의 데이터 형식의 매개 변수를 설정합니다.

<DataTemplate x:Key="myActivity" DataType="{x:Type ...}"> 

나는 보통 첫 번째 작업을 수행하지만 어떤 작업을해야합니다.

관련 문제