의 행을 더블 클릭 나는 다음과 같이 선택 목록으로 사용하기위한되는 WPF UserControl을 개발했다 :에 명령을 바인딩하는 방법을 데이터 그리드
- 데이터 그리드를 개체의 CollectionView에 바인딩 (예 : 직원)
- DataGrid 위에 표시된 TextBox는 DataGrid에 표시된 항목을 필터링하는 데 사용할 수 있습니다.
사용자가 DataGrid에서 행을 두 번 클릭 할 때 실행될 명령을 표시하려고합니다. 그런 다음 컨테이너는 DataGrid에서 SelectedItem을 사용하여 작업을 수행 할 수 있습니다.
지금까지 내가 처리하려 한 두 번 클릭하여 다음과 같이
<DataGrid IsReadOnly="True">
<DataGrid.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="... />
</DataGrid.InputBindings>
...
을 더블 클릭 이벤트가 여전히 데이터 그리드의 헤더에 때 사용자가 클릭을 발사하지만. 더블 클릭이 DataGrid의 본문에있을 때만 Command가 실행되도록 제한 할 수 있어야합니다. 이 작업을 수행하는 선언적 방법이 있습니까?
UPDATE
난 그냥 WPF와 MVVM와 그립군요, 정말이 같은 낮은 수준의 재사용 가능한 구성 요소를 구현하는 방법에 대한 지침을 찾고 있어요. 어떤 일반적인 조언도 기꺼이 받아들이고 upvoted 것입니다. 데이터 격자의 selectedItem가
노출 RoutedEvent "ItemDoubleClick"또는 유사한 바인딩 된 종속성 속성 "의 selectedItem을"노출
: 약자로, 나는이 UserControl을을 원할 것입니다 있으리라 믿고있어 사용자가 행을 두 번 클릭하면 시작됩니다.
ICommandSource
을 구현하고 행 더블 클릭 이벤트 처리기에서CommandHelpers.ExecuteCommandSource(this)
을 호출하십시오.
+1 감사합니다. 이것은 정확하게 달성하고 싶은 것이지만, 선언적 방법이 있는지 궁금합니다. – Joe
쉬운 방법이 있는지 의심 스럽습니다. [Blend SDK] (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f1ae9a30-4928-411d-970b-e682ab179e17&displaylang=en)의 'Interactivity (상호 작용)'을 사용하여 이벤트를 명령에 파이프 할 수 있으며 'EventToCommandAction', 문제는 인터랙티비티를 스타일로 사용하는 것은 ** 매우 복잡합니다 **하지만 문제가 없다면 [방법이 있습니다] (http://stackoverflow.com/questions/1647815/how- add-a-style-set-behavior-in-a-style-setter/4779168 # 4779168). –
@HB MVVM을 사용하고 KISS를 사용하고 싶습니다. 이제 코드 비하인드 솔루션을 찾아 보겠습니다.솔루션에 대한 한 가지 언급 - 아마도 DataGrid에 추가 될 때마다 모든 행에 MouseBinding을 만들 것입니다. 행 수가 많으면이 방법이 약간 비효율적 일 수 있습니까? 코드 비하인드 길을가는 경우, DataGrid.MouseDoubleClick 이벤트를 처리하고, 행에 있는지 확인한 다음, 명령을 실행하는 것이 더 효율적인지 궁금합니다. – Joe