나는대로 만들 그리드의 WPF 목록 상자는 다음이 다음과 같이WPB리스트 박스는 클래스 내에서 제어하기 위해 결합
나는 단순한 선언으로 XAML에서 목록 상자를 정의
코드에서<ListBox Name="MyListbox" >
</ListBox>
, 동적으로 임의의 수의 Grid 항목 (System.Windows.Controls.Grid)을 만들고이를 ListBox에 추가합니다. 다음과 같음 :
foreach (MyDataType myItem in MyDataList)
{
Grid newGrid = new Grid();
// Code that sets the properties and values of the grid, based on myItem
MyListbox.Items.Add(newGrid);
}
위대한 작품이며 모든 것이 내가 원하는 방식으로 보입니다.
이제 ListBox에서 실제 myItem 개체에 대한 참조를 저장하여 나중에 참조 할 수 있도록 결정했습니다. 바로 표시 그리드를 표시하는 지금, 물론
foreach (MyDataType myItem in MyDataList)
{
Grid newGrid = new Grid();
// Code that sets the properties and values of the grid, based on myItem
MyListbox.Items.Add(new ListGridItemNode(myItem,newGrid));
}
내 목록 상자를 대신 :
public class ListGridItemNode
{
public MyDataType theItem;
public Grid theGrid;
public ListGridItemNode(MyDataType inItem, Grid inGrid)
{
theItem = inItem;
theGrid = inGrid;
}
}
그리고 다음에 코드를 변경 :
내 생각과 같은 새로운 클래스를 만드는 것이 었습니다 텍스트 "MyApp.ListGridItemNode".
내 질문은 : ListBox에 레벨을 더 깊게 표시하고 각 ListGridItemNode 객체의 실제 그리드를 표시하려면 어떻게합니까?
이것이 바인딩과 관련이 있다고 생각하지만, 내가하는 것처럼 작동하는 예제는 찾을 수 없습니다. 내가 찾던 대부분의 것은 객체 전체의 문자열이 아니라 전체 컨트롤에 바인딩하는 것을 보여줍니다.
이 * 이것은 * 할 수 없습니다 것입니다 당신이 문서를 찾을 수없는 이유. 항목 템플릿을 사용하여 데이터가 표시되는 방법 *을 결정하는 데이터에 바인딩되는 컨트롤을 만듭니다. 당신은 동적으로 아이템 컨트롤에 추가해서는 안됩니다. – BradleyDotNET
코드에 UI 요소를 만들지 마십시오. 대신 ListBox 항목에 적절한 DataTemplate을 만듭니다. MSDN의 [데이터 템플릿 개요] (http://msdn.microsoft.com/en-us/library/ms742521.aspx) 문서를 살펴보십시오. – Clemens
실제로 이것은 이상합니다. 다른 방법으로는 (격자의 목록 상자) 이해할 수 있습니다. 그리드 위에 파란색 초점을 어떻게 다룰 예정입니까? 그리드 모음이 필요한 경우 ItemsControl 또는 StackPanel 안에 래핑하십시오. – Aybe