2010-08-13 2 views
0

저는 초보 프로그래머이며 취미로 경력을 쌓아 왔습니다. 따라서 나는 일하는 회사의 청구서 작성을위한 신청서를 작성하고 있습니다. 나는 공급 업체로부터 데이터 피드를 가져 와서 고객, 제품 및 요금 등을 일치시키고 인보이스를 생성하는 인보이스 발행 작업을하고 있습니다. 나는 이제 그걸 고치려고 노력 중이며 고객 및 요금 세부 사항을 편집 할 수 있습니다. 그 부분은 조회 값을 보유한 여러 테이블을 가짐을 의미합니다. 부가가치세 (VAT) 비율, 가격 인상, 맞춤 비율..NET4 WPF Datagrid - 다른 데이터 유형에 대한 응답

WPF, C#, .Net 4.에서 응용 프로그램을 작성하고 있습니다. 또한 레이어 분리를 위해 MVVM 패턴을 유지하려고합니다.

저는 데이터 레이어 및 나머지 모든 부분과 대화를 처리하는 EditLookupTableViewModel이라는 일반적인 VeiwModel을 만들었습니다. 내 문제는보기입니다. 위의 클래스에서 허용하는 모든 데이터 형식을 처리 할 수있는 단일보기를 만들고 싶습니다. 내가 붙어있는 비트는 이것이다.

데이터를 데이터베이스 테이블의 현재 값 목록으로 제시하고 사람들이 해당 값을 편집하거나 새 값을 추가 할 수있게하려고합니다. 다양한 데이터 형식은 모두 Entity Framework 4를 통해 액세스하는 SQL 데이터베이스의 테이블을 기반으로합니다. 테이블의 수가 모든 열이나 형식이 동일한 것은 아닙니다.

DataGrid 컨트롤을 사용하여 데이터를 목록으로 표시하는 경우 표시되는 데이터 형식에 따라 열 형식을 변경하려면 어떻게해야합니까?

저는 다양한 사이트에서 검색해 왔지만 적합하지 않은 것을 찾지 못했습니다.

사용자에게 DataTemplate을 적용한 다음 DataTemplateSelector를 사용할 수 있다고 생각했지만 DataGrid에 대한 DataTemplate을 만드는 방법이 표시되지 않습니다.

그런 다음 ContentPresenter를 사용할 것이라고 생각했지만 템플릿을 선택하는 방법을 알 수 없습니다.

이상적으로 나는 몇 가지 테이블이 동일한 구조를 가지므로 같은 테이블에 대한 템플릿을 재사용하는 것이 좋을 것이므로 코드에서 템플릿을 제어 할 수있는 몇 가지 종류의 TemplateSelector를 사용하고 싶습니다.

여러보기를 만드는 것보다 더 우아한 해결책이 있어야합니다. 도움이 필요합니다.

감사

사이먼

답변

0

당신이 데이터와 상호 작용하는 방법을 일부 변경을 필요로하지만 내가 WCF RIA로 보일 것이다. 기본적으로 CRUD 작업에 필요한 영구적 인 상태를 처리하는 Entity Model과 한 번에 셀을 편집 할 수있는 예쁜 Silverlight DataGrid가 있습니다. 인터넷에 샘플이 있습니다. 샘플을 얻고 실행하는 데 필요한 시간이 30 분 미만이면 찾으실 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 그게 해결책일지도 모르지만 나는이 시점에서 WCF를 사용하기를 원하지 않는다. 또한 Silverlight를 사용하고 싶지 않습니다. 플랫폼은 WPF이며이 게시물의 범위를 벗어나는 이유 때문에 플랫폼이 그대로 유지됩니다. 내가 원하는 것은 DataGrid가 전달하는 객체 유형에 따라 열의 수와 유형을 변경하는 것이지만 반드시 필요하지는 않지만 열을 자동 생성하도록두고 싶지는 않습니다. 항상 모든 열을 표시합니다. – SBuckner

0

answer이 도움이 될 수 있습니다. MVVM 스타일의 열 정렬을 추가 및 제거 할 수 있습니다.

응답은 DataGridColumns.I의 콜렉션에 바인드하여 ColumnViewModel에 바인드하도록 수정했습니다.이 방법을 사용하면 내 ViewModel 코드에서 컨트롤 이름 공간을 사용할 필요가 없으므로 솔루션이 MVVM보다 많다고 느낍니다.

그 대답을 기반으로 유사한 작업을 수행 할 수 있으며, ColumnViewModel의 여러 하위 클래스를 만들어 확장 기능 내에서 GetType을 사용하여 질문에 언급 된 요구 사항을 지원할 수 있습니다.