2012-04-18 4 views
0

내 응용 프로그램에는 일부 텍스트 블록과 확인란이있는 ItemTemplate에 대한 데이터 템플릿이있는 목록 상자가 있습니다. 나는이 응용 프로그램을 사용하여 엑셀 시트를로드하고 그 내용을 읽고 목록 상자에 몇 가지를 추가합니다 (목적은 설명을위한 텍스트 블록과 이벤트에 대한 확인란을 만듭니다).데이터 템플릿 및 목록 상자

첫 번째 아이디어는 DataGrid를 사용하는 것이지만 시트를 읽을 때 체크 상자 (각 CB에 대해 하나의 이벤트)에 대한 이벤트를 만들어야하지만 DataGrid에서는 수행 할 수 없습니다. 그런 다음 ItemTemplate의 데이터 템플릿을 사용하여 목록 상자 옵션으로갔습니다. 하지만 ContentPresenter 사용할 때 "null"문제 개체에 붙어했다 (목록 상자의 항목을 "준비"WPF에 대한 일부 버그가 있기 때문에 내가 무엇을 읽고에서).

그래서, 이것을 "자동화"하는 또 다른 방법이 있습니까? 또는 각 텍스트 블록과 확인란을 만들어야합니까?

감사합니다. (나쁜 영어에 대해 유감스럽게 생각합니다)

답변

1

이것을 구현하는 정통한 방법은 표시하려는 각 항목을 나타내는보기 모델 개체를 작성하는 것입니다. 이 뷰 모델에는 bool 속성과 데이터를 저장하는 문자열 속성이 포함되어있을 가능성이 높습니다. 엑셀 시트를 구문 분석 할 때 각 항목에 대해 뷰 모델의 인스턴스를 만들고 데이터를 입력 한 다음 목록에 추가하십시오.

모든 엑셀 데이터를 읽은 후에는 귀하의 데이터를 표현. 먼저, 뷰 모델 객체에 대한 DataTemplate을 선언하십시오. 이 DataTemplate에서 bool에 확인란을 바인딩하고 문자열에 텍스트 블록/레이블을 바인딩합니다. 그런 다음 ListBox을 선언하고 뷰 모델 목록 인스턴스를 ListBox.ItemsSource으로 바인딩하십시오. 모든 것을 올바르게 수행했다면 각 행에 체크 박스와 설명이 포함 된 목록 상자가 표시되어야합니다.

참고 : 사용자가보기 모델에서 데이터를 수정할 수있게하려면보기 모델 개체에 INotifyPropertyChanged을 구현하고 DataTemplate에서 TwoWay 바인딩을 사용해야합니다.