2009-10-06 7 views
16

Im .NET 2.0 C#에서 제공되는 WPF 프로그래밍 초보자입니다.WPF 데이터 바인딩 스택 패널

나는 데이터베이스의 테이블에서 데이터로 채워야하는 가로 StackPanel을 만들려고 노력하고 있습니다. 문제는 아래 표의 일부 텍스트로 이미지를 표시 한 다음이 두 항목을 가로로 쌓아두기를 원한다는 것입니다. 나는 단순히이 작업을 수행하는 방법을 oout 알아낼 수 없습니다

<StackPanel Orientation="horizontal" ItemsSource="{Binding Path=myTable}"> 
    <StackPanel> 
     <Image Source="User.png"/> 
     <Label HorizontalAlignment="Center" Content="{Binding Path=UserName}"></Label> 
    </StackPanel> 
</StackPanel> 

:

여기에 내가하고 싶은 것을 표시하는 일부 의사 코드입니다.

답변

22

기본적으로 개체 열거를 표시 할 수있는 컨트롤을 사용하려고합니다. 가능한 컨트롤은 클래스 ItemsControl과 그 자손 (Selector, ListBox, ListView 등)입니다.

이 컨트롤의 ItemsSource 속성을 원하는 개체 목록 (여기서는 데이터베이스에서 가져온 사용자 목록)에 바인딩하십시오. 컨트롤의 ItemTemplate을 목록의 각 항목을 표시하는 데 사용되는 DataTemplate으로 설정합니다.

샘플 코드 :

에서

Resources 부분 (예를 Window.Resources에 대한)에서

<DataTemplate x:Key="UserDataTemplate"> 
    <StackPanel Orientation="Horizontal"> 
    <Image Source="User.png"/> 
    <Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" /> 
    </StackPanel> 
</DataTemplate> 

당신의 Window/Page/UserControl : 뒤에 코드에서

<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" /> 

:

에 당신은 확실히 ItemsControl에 (또는 일부 파생)가 필요합니다

<DataTemplate x:Key="UserDataTemplate"> 
    <StackPanel> 
     <Image Source="User.png"/> 
     <Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" /> 
    </StackPanel> 
</DataTemplate> 

<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" > 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

:

29

줄리앙의 대답은 서면 설명을 정확하지만, 귀하의 XAML을보고, 당신이 다음과 같은 뭔가를 찾고있다가 나타납니다 당신의 근원을에 묶으십시오. 그런 다음 항목 패널 (기본적으로 세로 방향이있는 VirtualizingStackPanel이라고 생각 됨)을 설정하여 방향을 변경할 수 있으므로 가로 방향이있는 VirtualizingStackPanel로 설정하면됩니다. 그런 다음 각 항목에 대한 ItemsTemplate을 원하는 레이아웃으로 설정할 수 있습니다 (이미지는 데이터베이스에서 바인딩 된 텍스트 위에 쌓입니다).

+0

두 분 모두 덕분에 귀하의 사례는 내가 필요한 것입니다! –

+2

이것은 지금까지 작성된 모든 XAML 서적/자습서의 첫 번째 학습이되어야합니다. – srock