2012-07-04 3 views
0

DragMove() 메서드에 약간의 문제가 있습니다. 메뉴에서 MouseLeftButtonDown 이벤트가 처리 될 때 이것을 호출하고 싶습니다 (간단히 말해서, 메뉴를 통해 창을 끌어오고 싶습니다).DragMove WPF가 작동하지 않습니다.

내 XAML :

<Window x:Class="LoginForm.RidicWindow" 
    ...namespaces... 
    Title="RidicWindow" Height="600" Width="800" WindowStyle="None" ResizeMode="NoResize" BorderBrush="#48067f" BorderThickness="2" Icon="img/EvidenceLogo.png"> 

some XAML 
     <Menu x:Name="Menu" Grid.Column="0" Grid.Row="0" MouseLeftButtonDown="Drag"> 
...rest of doc 

그리고 풀어서 C# 코드 : 그것은 작동하지 않습니다

private void Drag(object sender, MouseButtonEventArgs e) 
    { 
     base.OnMouseLeftButtonDown(e); 
     this.DragMove(); 
    } 

. 나는 이유를 모른다. 메뉴는 UIElement의 자손입니다. 제 의견으로는 모든 것이 정상적으로 보입니다.

나는 그것이 간단하고 코드에서 어리석은 실수를한다고 믿습니다.

답변

0

당신은 좋은 예 here

+0

그냥 링크를 사용하여 답변을 향상시킬 수 있습니다. 해당 위치에서 발견 할 수있는 내용을 요약하여 포함하면됩니다. – ronalchn

+0

그런 다음 개선하십시오. 당신은 많은 평판을 가지고 있습니다. –

1

또는 메뉴가 MouseLeftButtonDown 이벤트를 소비를 찾을 수 있습니다. 따라서 이벤트 핸들러가 호출되지 않습니다. PreviewMouseLeftButtonDown 만 발생합니다. 그러나이 이벤트에서 DragMove()를 호출하면 정상적인 메뉴 기능을 사용할 수 없습니다. DragMove() 내부에서 WM_LBUTTONUP 메시지가 전송됩니다.이 메서드가 반환하면 버튼을 전혀 누르지 않은 것처럼 보입니다.

해결책은 다음과 같습니다. 두 개의 열, 하나의 자동, 하나 *가있는 눈금에 메뉴를 놓으십시오 (또는 너비는 생략하십시오). 그렇지 않으면 핸들러가 호출됩니다 오른쪽 부분에 마우스 이벤트 메뉴를 클릭 소비 왼쪽에

<Grid MouseLeftButtonDown="handler"> 
    <Grid.Background> 
    <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.MenuBarColorKey}}" /> 
    </Grid.Background> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <Menu IsMainMenu="True">...</Menu> 
</Grid> 

를받을 수 없습니다, 그리드에게 배경을 제공합니다.

관련 문제