이것은 오랜 시간 lurker이지만이 포럼의 첫 번째 게시물입니다. 저는 약 2 개월 정도 WPF를 배우기 시작했으며, 훈련 목적으로 응용 프로그램을 만들려고합니다.WPF : DataGrid에 대한 데이터 바인딩
EF6 ORM을 사용하여 응용 프로그램에 추가 한 백엔드 데이터베이스가 있습니다. 내 응용 프로그램에서는 데이터베이스의 테이블에있는 열에 채워야하는 ComboBox가 있습니다. 목록에 바인딩을 사용하면됩니다.
문제가있는 부분은 DataGrid
입니다. DataGrid
의 열은 ComboBox
에서 선택한 Item
에 따라 채워 져야합니다.
내 데이터베이스 :
당신이 볼 수 있듯이, 학교가 여러 부서를 가지고 있으며, 그 부서의 각각 HOD와 학생의 강도를 가지고있다.
내 응용 프로그램 :
ComboBox
는 학교 이름으로 채워집니다. DataGrid
은 학교 이름이 선택되면 채워집니다. DataGrid
에는 학교에서 사용할 수있는 부서별로 각 행이 있습니다. 그래서 해당 칼럼을 해당 학교의학과와 묶어야합니다. 그렇게 많이. 그러나 사용자가 입력 한 의견을 피드백 TextBox
에 저장하고 싶습니다.
DataGrid
을 개체에 바인딩 할 수 있도록 클래스를 만드는 방법을 이해할 수 없습니다. DataGrid
을 개체에 바인딩 한 다음 해당 열을 다른 개체에 개별적으로 바인딩 할 수 있습니까? 이 작업은 데이터 그리드에 바인딩하도록되어
:
편집 데이터베이스에서 생성 된 기관에서 별도로
, 나는 두 개의 클래스가 있습니다. 그리고 FeedbackLine은 다음과 같습니다 :
public class FeedbackLine: INotifyPropertyChanged
{
private string _dept;
public string Department
{
get { return _dept; }
set { _dept = value;
OnPropertyChanged("Department");
}
}
private string _HOD;
public string HOD
{
get { return _HOD; }
set { _HOD = value;
OnPropertyChanged("HOD");
}
}
private int _strength;
public int Strength
{
get { return _strength; }
set { _strength = value;
OnPropertyChanged("Strength");
}
}
private bool _isSelected;
public bool Selected
{
get { return _isSelected; }
set { _isSelected = value;
OnPropertyChanged("Selected");
}
}
private string _comment;
public string Comment
{
get { return _comment; }
set { _comment = value;
OnPropertyChanged("Comment");
}
}
private void OnPropertyChanged(string v)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v));
}
public event PropertyChangedEventHandler PropertyChanged;
}
나는 ViewModel을 사용하지 않았습니다. 문제는 LINQ에별로 좋지 않습니다. 클래스와 객체가 너무 많아서 어느 클래스를 바인딩해야할지 모릅니다. 내가 얻을 수있는 유일한 모호한 아이디어는 선택한 School
을 사용하여 데이터베이스를 쿼리하기 위해 LINQ를 사용하고 FeedbackLines
을 채워야한다는 것입니다.
편집 2 : 관심있는 사람들을위한 , 여기 내 모델 다이어그램은 WPF에서의 : Model Diagram
편집 3 : 은 내가 ViewModel에 대한 혼란 스러워요 생각합니다. 화면에 표시 될 데이터가 반드시 저장할 데이터는 아닙니다. 예를 들어, 선택되지 않은 행은 저장하지 않으려합니다. 내 Feedback
클래스는 데이터를 표시하고 저장하려고 시도합니다. 그리고 거기에 문제가 있습니다.DataGrid
은 객체에 바인딩 될 수 있지만 열은 다른 객체에 바인딩되지 않습니까? 예를 들어 Department에 Combobox
을 사용하도록 선택했다면 그런 다음 항목을 표시하는 데 ItemsSource
을 사용해야하지만 SelectedItem
만 저장해야합니다. 나는이 두 가지 관심사를 분리 할 길을 찾을 수 없다.
코드를 공유 할 수 있습니까? –
코드를 게시하십시오. –
코드에 따라 뷰 모델 또는 xaml을 의미합니까? –