2011-08-19 4 views
0

마우스 왼쪽 버튼 제스처를 WPF 버튼에 바인딩하고 있는데 마우스를 클릭 할 때만 발생한다고 예상합니다 (MouseDown + MouseUp). 그러나 마우스 버튼을 눌렀을 때 (해제하지 않고) 즉시 켜지는 것처럼 보입니다.마우스 왼쪽 버튼으로 왼쪽으로 발사 하시겠습니까?

  1. 올바른 방법으로 마우스 왼쪽 버튼을 클릭 할 수 있습니까?
  2. 이벤트 처리기에서 클릭과 누르기를 구분하려면 어떻게합니까?

샘플 코드 :

public partial class WpfTest : UserControl 
{ 
    // Gesture for clicking 
    public static MouseGesture MouseClickGesture = new MouseGesture(MouseAction.LeftClick); 

    // Logon command/gesture binding 
    public static RoutedUICommand LogonCommand = new RoutedUICommand(); 
    public static MouseBinding LogonClickBinding = new MouseBinding(LogonCommand, MouseClickGesture); 


    public WpfTest() 
    { 
     InitializeComponent(); 

     CommandBindings.Add(new CommandBinding(LogonCommand, LogonClicked)); 
     Logon.InputBindings.Add(LogonClickBinding); 
    } 

    private void LogonClicked(object sender, ExecutedRoutedEventArgs e) 
    { 
     MessageBox.Show("LogonClicked"); 
    } 
} 

답변

2

나는 모든 난 당신이 그들로부터 적절한 클릭 얻을 수 알고, 그 바인딩을 사용하지 것이다 (이 설계 진지를?). 내가 본 것은 놀라 울 정도로 힘들어 actual click on an arbitrary control입니다. 나는 당신이 클릭 할 수있는 무엇이든 주위에 Button을 포장하고 버튼의 Command/Click -Event를 사용할 것을 제안합니다. 나는 동적으로 런타임에 어떤 버튼을 만들 필요가 있기 때문에 내가 명령 바인딩을 사용하고

<ControlTemplate TargetType="{x:Type Button}"> 
    <ContentPresenter/> 
</ControlTemplate> 
+0

를, 그리고는이 종류의 일을하기 위해 권장되는 방법이라고 생각 :

변경이 버튼의 템플릿은 보이지 않게하기 WPF에있는 것. 런타임에 단추를 만들 때 프로그래밍 방식으로 Click 이벤트를 할당 할 것을 제안합니다. – Travis

+0

@Travis : 원할 경우 명령을 설정할 수도 있습니다. 유스 케이스에 따라 다릅니다. –

+0

차이점은 무엇입니까? – Travis

관련 문제