기본적으로 나는 여기에 새로운 데이터 바인딩입니다. 마크를 표시하기 위해 각 행에 내부 그리드를 삽입하려고했습니다. 아무도 이것을 달성하는 방법을 도울 수 있습니까?
XAML 코드 :
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding marks}" AutoGenerateColumns="True"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
아래는 학생용 클래스와 마크 용 클래스 2 개를 포함하는 코드입니다.
암호:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
dataGrid.ItemsSource = GetStudentsInfo();
}
private List<Student> GetStudentsInfo()
{
List<Student> stdColl = new List<Student>();
stdColl.Add(new Student() { ID = 1, Name = "AAA", marks = new Marks() { Sub1 = 75, Sub2 = 80, Sub3 = 90 } });
stdColl.Add(new Student() { ID = 2, Name = "BBB", marks = new Marks() { Sub1 = 45, Sub2 = 50, Sub3 = 70 } });
stdColl.Add(new Student() { ID = 3, Name = "CCC", marks = new Marks() { Sub1 = 35, Sub2 = 80, Sub3 = 60 } });
stdColl.Add(new Student() { ID = 4, Name = "DDD", marks = new Marks() { Sub1 = 75, Sub2 = 40, Sub3 = 90 } });
return stdColl;
}
}
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public Marks marks { get; set; }
}
public class Marks
{
public int Sub1 { get; set; }
public int Sub2 { get; set; }
public int Sub3 { get; set; }
}
내부 데이터 그리드는 외부 데이터 그리드와 마찬가지로 목록에 바인딩해야합니다.
Mark 클래스 변경
public class Mark {
public int Sub { get; set; }
}
Mark
속성을 목록으로 변경
public Marks marks { get; set; }
...에
public List<Mark> Marks { get; set; }
학생을 추가 할 때 List
대신 새 학생을 제공하세요.Mark
stdColl.Add(new Student() { ID = 4, Name = "DDD", Marks = new List<Mark>() { new Mark(){ Sub = 90; } } });
그런 다음 바인딩에 대한 사소한 이름 변경
ItemsSource="{Binding Marks}"
이제 바인딩은 Marks
클래스 내부의 속성을 찾습니다.Student
또 다른 권장 사항으로 MVVM 패턴과 사용 방법을 살펴보십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다