2014-05-17 2 views
1

저는 WPF에서 새로 왔으며 xaml에서 ObservableCollection으로 바인딩하려고합니다. 현재 내가 같은 일을 오전 : XAML에서ObservableCollection 목록에 데이터 바인딩 바인딩

: CS에서

<Grid Grid.Column="1"> 
      <local:ProcessingStep DataContext="{Binding ProcessingSteps[0]}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
</Grid> 
<Grid Grid.Column="2"> 
<local:ProcessingStep DataContext="{Binding ProcessingSteps[1]}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
</Grid> 
<Grid Grid.Column="3"> 
    <local:ProcessingStep DataContext="{Binding ProcessingSteps[2]}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
</Grid> 

:

public ObservableCollection<ProcessingStepView> ProcessingSteps 
{ 
    get 
    { 
     return m_ProcessingSteps ?? 
      (m_ProcessingSteps = new ObservableCollection<ProcessingStepViewl> 
         { 
          new ProcessingStepView("Step1"), 
          new ProcessingStepView("Step2"), 
          new ProcessingStepView("Step3") 
         }); 
     } 
} 

어떻게 직접 WPF에 목록을 결합 할 수 있습니까? 예 : 100 단계가있는 경우 하나씩 수행하는 것이 좋지 않습니다.

+0

항목을 어떻게 열로 정렬합니까? 그것들은 같은 너비입니까, 아니면 그냥 수평으로 쌓아 올리는 것입니까? – dkozl

+0

가로로 쌓아두고 싶습니다 – olidev

답변

2

당신은 ItemTemplateItemsControl를 사용하여 목록에 바인딩 할 수 있습니다 :

<ItemsControl ItemsSource="{Binding ProcessingSteps}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <local:ProcessingStep /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

ItemsControl는 기본적으로 단지 중계기를 선택하지 않고, ItemTemplate만큼 많은 항목을 반복 할 것이다 ProcessingSteps에가와에 배치 당신이 선택한 패널. 이 경우 가로형 StackPanel

+0

위. 그것은 작동합니다. 나는 오늘 수업을 배웠다. @ dkozl 감사합니다. – olidev

+0

문제는 @olidev입니다. BTW는 기본적으로'ItemsPanel'을 제공하지 않는다면 수직'StackPanel'을 사용할 것이지만'Grid','WrapPanel','Canvas' 또는'UniformGrid'와 같이 원하는'Panel'으로 변경할 수 있습니다. 모든 목록 컨트롤은'ItemsControl'에서 상속받습니다. 예를 들어'ListBox'는 항목 선택 기능이 추가 된 'ItemsControl'이지만 메커니즘은 그대로 유지됩니다. – dkozl

관련 문제