2009-12-16 4 views
0

나는 다음과 같이 단순화 된 형태로되어 있다는 개체가 :WPF의 메시지 상자 및 DataTemplates는

<DataTemplate x:Key="ComponentResourceKey TypeInTargetAssembly={x:Type local:PropertyGrid}, ResourceId={x:Type clr:Boolean}}"> 
     <CheckBox IsEnabled="{Binding Path=IsWriteable}" IsChecked="{Binding Path=Value}"/> 
</DataTemplate> 
:

public class MyObject 
{ 
    public bool Activate { 
    get { MessageBox.Show("My Status"); } 
    set { Do Some Stuff } 
} 

나는 그렇게 같은 확인란 속성을 "활성화"에 매핑하는 DataTemplate을이

템플릿은 내가 사용중인 WPF Property Grid 컨트롤에서 왔습니다. 문제는 메시지 상자가 절대로 표시되지 않고 주 창이 상자의 응답을 기다리고 있다는 것입니다. 전화가 올 것으로 예상되지만 대화 상자가없는 경우 오류 알림 소리가 들립니다.

WPF에서 z 순서가 변경되는 항목이 있습니까? 내가 예상하지 못한 상황에서 뛰고 있습니까?

답변

1

getter 안에 메시지 상자를 표시해서는 안됩니다. 대신 명령을 사용하십시오.

MessageBox.Show를 매개 변수로 사용하여 현재 창을 호출하면 모달로 표시되어야합니다.

+0

명령으로 시도했지만 여전히 동일한 작업을 수행합니다. 명령은 기본 창에서 XAML로 바인딩됩니다. 그런 다음 위의 특성에서 명령이 실행됩니다. execute에 대한 이벤트 처리기가 호출되고 처리기 내에서 MessageBox.Show가 발견됩니다. 대화 자체의 소리가 들리지만 표시되지 않습니다. 어떤 아이디어? –

+0

왜 getter에서 명령을 실행하고 있습니까? WPF가 Google을 통해 명령을 이벤트에 매핑하는 솔루션 중 하나를 사용하여 실행하게하십시오. – Matthias

+0

내가 정말로 찾고 있던 것은 유효성 검사 처리입니다. 고집을 부려 주셔서 고맙고 미안합니다. –