2012-03-05 2 views
0

우리는 코드 숨김이 적게 드는 WPF로 응용 프로그램을 개발하고 있습니다. 우리는 많은 MVVM 및 Binding 자원을 사용하고 있습니다. 나는 코드 숨김없이 격자에서 더블 클릭을하는 방법을 찾기 위해 웹을 검색했으며 AttachedCommandBehavior 프로젝트를 발견했습니다 (http://marlongrech.wordpress.com/2008/12/13/). 연결된 명령 행동 - v2 - aka - acb /),하지만 예기치 않은 문제가 발생했습니다 :DataGrid의 영역 내에서만 AttachedCommandBehavior를 두 번 클릭하는 방법

사용자가 DataGrid를 클릭하면 제대로 작동하지만 Columns Header 또는 ScrollViewer를 클릭 할 때 Mouse_Double_Click이 실행되지 않아야합니다. 어떻게 해결할 수 있을까요? AttachedCommandBehavior가 사용자가 DataGrid의 영역 내부를 클릭 할 때 이벤트를 발생시키는 것보다 필요합니다. 소스를 다운로드하여 어떤 오브젝트가 클릭되는지를 확인했지만 찾지 못했습니다.

감사합니다.

+0

전체 격자에 적용하는 대신 격자 영역에만 적용하십시오. –

+0

작동하지 않습니다. 이미 시도해보십시오. 어떻게 작동 시키는가에 대한 모범이 있습니까? –

+0

나는 뭔가를 말한 것을 잊어 버렸습니다 : 우리는 60 컬럼 이상의 데이터 그리드를 가지고 있습니다. –

답변

0

이것은 우리가 문제를 해결 한 방법입니다 : 기본적으로

private void dtgExtended_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     if (sender is Control 
      && (!e.OriginalSource.ToString().Equals("Microsoft.Windows.Themes.ScrollChrome") && !e.OriginalSource.ToString().Equals("System.Windows.Shapes.Rectangle"))) 
     { 
      e.Handled = false; 
      DataGridDoubleClick c = new DataGridDoubleClick(); 
     } 
     else 
      e.Handled = true; 
    } 

이 유일한 식별 사용자가 클릭하는 경우 : 우리는 데이터 그리드로 UserControl이 구성 요소를 생성하고, 자신의 숨김 코드로 한이 추가 ScrollBar 영역의 사각형 내부 또는 ScrollBar를 클릭합니다. 열 머리글에 클릭이 있는지 여부는 식별하지 않습니다.

하지만 결국 내 문제가 해결되었습니다.

관련 문제