2010-08-04 4 views
22

왜 WPF 테두리 컨트롤에 mousedoubleclick 이벤트가 없습니까? DataTemplate에 대한 레이아웃 요소가있는 ItemsControl이 있습니다. 세부 정보 대화 상자를 표시하기 위해 두 번 클릭 이벤트를 처리하려고하지만 테두리, 즉 내 레이아웃 컨테이너가 이벤트를 노출하는 것으로 나타나지 않습니다.왜 WPF 테두리 컨트롤에 mousedoubleclick 이벤트가 없습니까?

두 번 클릭 이벤트를 얻는 방법에 대한 제안이나 xaml을 재 작업하여 가능하게 만드시겠습니까?

답변

6

업데이트 : 죄송합니다, 내 나쁜 - 마우스 버튼 다운 이벤트 내부 늦은 시간

얻을 clickCount는

// e.Handled = true; optional 

if (e.ClickCount > 1) 
{ 
    // here comes double click and more :) 
} 
+0

Stackpanel에는 두 번 클릭 이벤트가 없습니다. 내가 그걸로 무엇을 제안하고 있니? –

+0

sry 게시글을 업데이트했습니다. –

15
당신의 ItemTemplate을 당신이 그냥 컨트롤의 인스턴스를 필요로하므로 MouseDoubleClick이 컨트롤에 선언

. 가장 간단한 방법은 기본 동작 클래스를 사용하는 것입니다.이 클래스는 다른 동작이 없으며 이제 ItemTemplate에있는 템플릿을 사용자 정의 된 템플릿으로 제공합니다.

<ItemsControl> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Control MouseDoubleClick="Control_MouseDoubleClick"> 
       <Control.Template> 
        <ControlTemplate> 
         <Border> 
          <!--Other ItemTemplate stuff--> 
         </Border> 
        </ControlTemplate> 
       </Control.Template> 
      </Control> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

아주 좋았습니다 - 저를 위해 매력처럼 일했습니다! – cordialgerm

+0

'ContentControl'을 사용하여 템플릿 대신 내용을 지정할 수도 있습니다. –

35

그냥 InputBindings를 사용하십시오.

일반적으로; WPF에서 컨트롤을 개발하지 않으면 이벤트 사용을 피하십시오. 일반적으로 코드 기반 이벤트의 사용은 MVVM 패턴 중단에 대한 강력한 표시입니다.

+2

드물게 stackoverflow에 내 질문에 대한 완벽한 대답을 건너 오지 않는다 – NielW

+1

우아한 솔루션. 자체 doubleclick 동작을 정의하는 것보다 낫습니다. – jHilscher

관련 문제