image

Drag 라고 적힌 부분이 border 컨트롤입니다.  거기를 끌면

윈도우즈 창이 움직입니다.

border1 에 이벤트주기

image

코드는 열라간단함

        private void border1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
            e.Handled = true;
        }

e.Handle =true;로 표시하는 이유

라우트된 이벤트의 이벤트 데이터에서 Handled 속성 값을 true로 설정하는 것을 "이벤트를 처리된 것으로 표시한다"라고 표현합니다. 기존 라우트된 이벤트를 사용하거나 새 라우트된 이벤트를 구현하는 응용 프로그램 제작자나 컨트롤 제작자가 라우트된 이벤트를 처리된 것으로 표시해야 하는 시점에 대한 절대적인 규칙은 없습니다. 대부분의 경우 라우트된 이벤트의 이벤트 데이터 포함되어 있는 "처리 완료"의 개념은 WPF API로 노출되는 다양한 라우트된 이벤트뿐만 아니라 사용자 지정된 라우트된 이벤트에 대한 고유한 응용 프로그램의 응답에 제한된 프로토콜로 사용해야 합니다. "처리 완료" 문제를 생각하는 또 다른 방법은 코드에서 의미 있고 상대적으로 완전한 방법으로 라우트된 이벤트에 응답한 경우 라우트된 이벤트를 처리된 것으로 표시해야 한다는 것입니다. 일반적으로 발생한 라우트된 이벤트의 단일 인스턴스에 대해 별도의 처리기를 구현해야 하는 의미 있는 응답은 하나만 있어야 합니다. 둘 이상의 응답이 필요한 경우에는 라우트된 이벤트 시스템을 전달용으로 사용하는 대신 단일 처리기 내에서 연결되는 응용 프로그램 논리를 통해 필요한 코드를 구현해야 합니다. "의미 있는 상태"라는 개념 역시 주관적이며 응용 프로그램이나 코드에 따라 달라집니다. "의미 있는 응답" 예로는 포커스 설정, 공용 상태 수정, 시각적 표현에 영향을 미치는 속성 설정, 다른 새 이벤트 생성 등이 있습니다. 의미 없는 응답의 예로는 시각적 영향이나 프로그래밍 표현이 없는 전용 상태 수정, 이벤트 로깅, 이벤트 인수를 검사한 응답하지 않도록 선택하는 것 등이 포함됩니다.[MSDN]

image

Window 에서 WindowsStyle을 None 로 주면 메뉴바가 없어집니다.

image

 

이걸로 완성

구현모습

image

드래그도 잘됨

image

 

PreviewEvent "미리 보기"(터널링) 및 버블링 이벤트와 이벤트 처리?

라우트된 미리 보기 이벤트는 요소 트리에서 터널링 경로를 따르는 이벤트입니다. 이름에서 알 수 있듯이 "미리 보기"는 라우트된 미리 보기(터널링) 이벤트가 해당되는 라우트된 버블링 이벤트보다 먼저 발생한다는 입력 이벤트의 일반적인 원칙을 나타냅니다. 또한 터널링 및 버블링 쌍이 있는 라우트된 입력 이벤트는 고유한 처리 논리를 가집니다. 라우트된 터널링/미리 보기 이벤트가 이벤트 수신기에 의해 처리된 것으로 표시되면 라우트된 버블링 이벤트의 수신기가 이벤트를 받기 전에 라우트된 버블링 이벤트가 처리된 것으로 표시됩니다. 라우트된 터널링 및 버블링 이벤트는 기술적으로 서로 다른 이벤트이지만 동일한 이벤트 데이터 인스턴스를 공유하여 이 동작을 활성화합니다.

라우트된 터널링 및 버블링 이벤트 간의 연결은 특정 WPF 클래스가 고유하게 선언된 라우트된 이벤트를 발생시키는 방식으로 내부적으로 구현되며 이는 쌍을 이루는 라우트된 입력 이벤트의 경우에도 해당됩니다. 하지만 이 클래스 수준 구현이 존재하지 않으면 라우트된 터널링 이벤트와 라우트된 버블링 이벤트 간에 이름 지정 체계를 공유하는 연결이 없습니다. 이와 같은 구현이 없으면 이 두 이벤트는 완전히 분리된 두 개의 라우트된 이벤트이며 차례로 발생하거나 이벤트 데이터를 공유하지 않습니다.

  (MSDN)

+ Recent posts