2012-11-19 3 views
5

ChildWindow에는 CloseButton이 있고 핸들러는 Click 이벤트에 할당되어 있습니다. (단, 예를 들어) 코드 : 빠른 후ChildWindow 여러 번 빠르게 클릭하면 닫기 버튼 이벤트 핸들러가 여러 번 실행됩니다.

OnCloseButtonClick(object sender, RoutedEventArgs e) 
{ 
    DialogResult = true; 
    System.Diagnostics.Debug(_i++); 
} 

:

<Button x:Name="CloseButton" Click="OnCloseButtonClick" /> 

개인 카운터 (진단 문제에 대한) :

private uint _i; 

닫기 이벤트 핸들러

닫기 버튼 선언 클릭 프로그램은 "1", "2", "3"등을 출력 할 수 있습니다 ... 내가 아는대로 ny DialogResult = true (또는 false)이면 ChildWindow를 닫아야하며 CloseButton의 Click 이벤트를 두 번째로 올릴 수 없습니다.

누구든지 문제의 원인을 파악하고 부울 플래그 (실행/실행)없이 문제를 해결하는 데 도움을 줄 수 있습니까? 내 의견

문제는 가까운 애니메이션 완료되고 윈도우가 닫힐 때까지 버튼 이벤트를 사용할 수있는 의미 창을 닫으려면 창 닫기 애니메이션을 활성화하기 때문에 복사

+1

첫 번째 줄'((Button) sender)를 추가합니다 .IsEnabled = false'가 해결책이 아닙니까? –

+0

예, 맞습니다.하지만 해결 방법과 비슷합니다. 그리고 나는 또한 문제의 원인을 알고 싶다. –

+0

아무 문제 없다고 생각합니다. 단추를 여러 번 클릭 할 수 있으며 단추를 클릭 할 수 없게 할 때 단추를 비활성화 할 때까지 사용 가능합니다. – Jehof

답변

2

참조 During Silverlight ChildWindow closing animation user can click any button

신속하고 더러운 솔루션을 추가하는 것입니다

((Button)sender).IsEnabled=false; 

시작 부분에 처리기 기능을 클릭하십시오.

+0

UI 비주얼 상태로 이벤트 처리기 로직을 ​​믹싱하는 것은 나에게 짜증스럽게 보입니다. :) 하지만, 이제는 해결 방법이 있습니다. –

관련 문제