code

StackPanel에 컬렉션 바인딩

codestyles 2020. 11. 20. 09:00
반응형

StackPanel에 컬렉션 바인딩


개체 컬렉션을 가져와 StackPanel에 바인딩하고 싶으므로 기본적으로 컬렉션에 4 개의 요소가있는 경우 4 개의 버튼을 생성해야하는 스택 패널 내부에 있습니다.

나는 이것을 시도했지만 어쨌든 올바른 접근 방식이라고 생각하지 않습니다. 나는 과거에 이러한 유형의 아이디어를 수행하기 위해 DataTemplated를 사용했습니다. 내가 틀렸다면 저를 수정하십시오.

여기 내 가짜 모델이 있습니다.

public class MockModel
{
   public ObservableCollection<MockNode> Nodes;

   public MockModel()
   {
      Nodes = new ObservableCollection<MockNode>();
   }
}

public class MockNode
{
   public MockNode()
   {
   }

   private string itemname;
   public string ItemName
   {
      get { return this.itemname; }
      set { this.itemname = value; }
   }
}

코드에서 다음과 같이 DataContext를 설정했습니다.

// Init Model
MockModel myModel = new MockModel();

for (int i = 0; i < 4; i++)
{
   MockNode mn = new MockNode();
   mn.ItemName = String.Format("Node {0}", i);
   myModel.Nodes.Add(mn);
}
// Set DataContext for StackPanel
Stack.DataContext = myModel.Nodes;

그리고 xaml

<StackPanel x:Name="tStack">
   <ItemsControl ItemsSource="{Binding Nodes}">
      <ItemsControl.Template>
         <ControlTemplate>
            <Button Content="{Binding ItemName}"/>
         </ControlTemplate>
      </ItemsControl.Template>
   </ItemsControl>
</StackPanel>

그것은 묶여 있지만 4 개의 버튼 대신 하나의 버튼 만 얻습니다 ....

아이디어?


좋아, 알아 냈어 ...를 사용하여 ItemsControl문제를 해결했습니다 ...

<ItemsControl x:Name="tStack" Grid.Column="0">
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
         <StackPanel Orientation="Horizontal"/>
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <Button Content="{Binding ItemName}"/>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>

참고 URL : https://stackoverflow.com/questions/3356719/bind-collection-to-stackpanel

반응형

'code' 카테고리의 다른 글

pgsql 포트 변경  (0) 2020.11.20
이미지 처리 : 폐색이란 무엇입니까?  (0) 2020.11.20
구조체 초기화로 구성된 벡터  (0) 2020.11.20
SQL 날짜 선택  (0) 2020.11.20
fileExistsAtPath : 존재하는 파일에 대해 NO 반환  (0) 2020.11.20