반응형
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 |