WPF는

2014-09-01 4 views
0

그래서 내가 예를 들어, 4 개 수업을 수업 시간에 사용할 수있는 모든 변수에 대한 데이터 그리드를 바인딩 클래스 A 타입, 클래스 C 타입 중 일부 등등).WPF는

하나를 선택하면 선택한 클래스의 공용 변수, 즉 왼쪽 열의 변수 이름과 오른쪽의 값으로 데이터 그 릿드를 채우기를 원합니다.

오른쪽 열을 편집 할 수는 있지만 클래스의 변수는 직접 업데이트하지 말아야합니다.

내 질문에, 그렇다면 어떻게 모든 변수의 일부가 각 클래스에서 다른 경우 선택한 클래스에 데이터 격자를 바인딩합니까? 그런 다음 어떻게 변수와 연결을 유지합니까? 사용자가 변경 한 사항이 사용자 정의 유효성 검사를 통과하면 나중에 업데이트 할 수 있습니까?

내 생각 (I 구현하는 방법을 알고하지 않는 것이) :

  • 각 클래스는 데이터 그리드가 결합 할 수있는 변환 방법의 일종이 필요하십니까? 그렇다면 그 방법은 무엇을 반환할까요?

  • 행 1에 각 클래스에 대해이 변수 등이 포함되어 있으므로 나중에 업데이트 할 수 있습니다.

답변

1

아마도 질문을하기 전에 시도했다면 이미 답변을 얻었을 것입니까? WPF에서 DataGrid 컨트롤은 열을 자동으로 생성하는 기능을 제공합니다. 실제로 이것은 기본 동작이며 원하지 않는 경우 해제해야합니다. 귀하의 경우에는 그러나, 그것은 당신이 그것을 왼쪽 싶지 소리. 당신이 유형을 변경할 때 지금 여기에 까다로운 부분

<DataGrid ItemsSource="{Binding Items}" /> 

을 :

당신은 이제 Items를 호출하자 ... DataGrid.ItemsSource 속성에 데이터 바인딩에보기 모델 또는 뒤에 코드에서 ObservableCollection<I> 속성을해야합니다 와 컬렉션의 개체로하는 데이터를 시도해야하는 DataGrid.Columns 컬렉션에 새로운 속성을 모두 결합 : 그것은

List<A> classAItems = GetClassAItems(); 
Items = new ObservableCollection<I>(classAItems); 

의 그! 다른 수업보기 : :

List<B> classBItems = GetClassBItems(); 
Items = new ObservableCollection<I>(classBItems); 

그게 전부 야!


UPDATE >>>

어떻게 두 개의 열 수 - 행을 채우는 각 변수와 함께, "필드"와 "가치"?

실수로 실제 질문이 아닌 이전 질문에 대한 답변을 실수로 한 것 같습니다. 열 머리글을 올바르게 채우려면 대신 ObservableCollection<object>을 사용해야합니다.열 머리글에 공통 속성 만 채워지려면 해당 속성을 가진 인터페이스를 선언해야합니다. 모든 클래스에서 해당 인터페이스를 구현 한 후에는 모두 동일하게 DataGrid에 표시 할 수 있습니다 같은 컬렉션).

+0

감사합니다. 어딘가에 있습니다. 변수 이름을 열 머리글로 사용하는 대신 두 개의 열 ("field"및 "value")을 가질 수 있으며 각 변수는 행을 채 웁니다. – simonalexander2005

+0

RE : 업데이트 - 고마워,하지만 그게 내 뜻이 아니야. 속성을 열 머리글로 사용하고 싶지 않습니다. 원하는 경우 "행 머리글"로 지정해야합니다. 그래서 내 DataGrid에는 두 개의 열이 있습니다. 아무리 많은 속성이 있더라도 상관 없습니다. 말이 돼? – simonalexander2005

+0

이렇게하려면 데이터 수집을 적절히 재구성해야합니다. – Sheridan