2012-03-02 5 views
0

관찰 가능한 컬렉션에 바인딩 된 WPF 데이터 격자가 있습니다. 의도 한대로 작동합니다. "번호를 선택한 행의 : {횟수가 간다}"WPF에서 데이터 격자의 속성에 텍스트를 바인딩하는 적절한 방법은 무엇입니까?

이 작업을 수행하는 적절한 방법은 무엇입니까 내가 지금 할 노력하고 무엇

는 말을 아래에 텍스트를 추가입니까? 보기 모델에서 SelectedCount 또는 이와 유사한 속성을 추가 할 수는 있지만 그다지 좋지 않습니다. 그것은 불필요한 것처럼 보입니다. 또한 레이블 뒤에 동적으로 레이블 텍스트를 설정할 수 있지만이 경우 "올바른"장소 중 하나를 잘 모르겠습니다.

아래 예가 있습니다.

편집 :

누구의 의도/점검을 제공하는 모든 기능을 취소하는 체크 박스 열 머리글이 척하십시오. 이 헤더 체크 박스의 상태는 최종 집계에 포함되지 않아야합니다.

example

답변

1

당신은 선언적 XAML에 SelectedItems.Count 속성에 바인딩하는 바인딩 요소를 사용할 수 있습니다

<TextBlock Text="{Binding ElementName=MyDataGrid, 
    Path=SelectedItems.Count, StringFormat=Number of selected rows: {0}}" /> 

업데이트 당신이 그렇게 SelectedXCount 속성을 추가, MVVM을 사용하고 아마도

귀하의보기 모델에 완벽하게 합리적인보기 모델의 응용 프로그램입니다. 뷰 모델에서이 기능을 사용하면 선택한 항목의 수를 기반으로 단위 테스트를 수행 할 수 있다는 장점이 있습니다. 예 : 사용자가 일부 항목을 선택한 경우에만 사용자가 진행할 수 있는지 확인하려는 경우 (CanNext 속성은 true를 반환 함).

SelectedItems 속성은 DependencyProperty이 아니므로 바인딩 할 수 없지만 MVVM에서 DataGrid를 사용할 때 문제를 해결할 수있는 온라인 기사가 많이 있습니다. 대부분의 솔루션은 DataGrid의 SelectionChanged 이벤트 호출시 뷰 모델 명령을 호출하는 메커니즘을 사용합니다.

+0

Yikes. 나는 또한이 질문에 있어야했다. 체크 박스 헤더도 있습니다 (모두 선택/모두 선택되지 않았습니다). 선택한 항목으로 계산하면이 부분이 깨질 수 있습니다. – jglouie

+0

답변 됨. – devdigital

+0

아주 좋았어, 고마워. – jglouie

관련 문제