2017-01-10 2 views
1

나는 을 Caliburn.Micro과 함께 사용하고 있습니다. 레이블을 클릭 할 때 어떤 코드가 실행되기를 원합니다. 나는 약간의 인터넷 검색을 시도했고, 약 cal:Message.Attach를 발견했다.Caliburn Micro 실행 코드 레이블 클릭

XAML :

<Label x:Name="Info" Content="Info" HorizontalAlignment="Left" Margin="305,440,0,0" 
VerticalAlignment="Top" FontFamily="Tahoma" FontSize="10" FontWeight="Bold" cal:Message.Attach="[Action ShowAboutWindow()]"/> 

C 번호 :

public void ShowAboutWindow() 
{ 
    MessageBox.Show("xyz"); // just to test whether ShowAboutWindow is executed whatsoever (see explanation below) 
    WindowManager.ShowWindow(new AboutViewModel(EventAggregator, WindowManager, SettingsManager)); 
} 

그러나, ShowAboutWindow는 전혀 실행되지 않습니다. 나는 WindowManager이 그것을 고치지 않는 것을 확인하기 위해 MessageBox을 추가했습니다.

내가 원하는 것을 어떻게 얻을 수 있습니까?

편집 1 : 이전에 시도한 것은 ViewModelpublic void Info() 메서드를 추가하는 것이 었습니다.이 방법은 버튼에 적용됩니다. 그러나이 경우에는 그렇지 않았습니다.

+1

당신은 우리에게 당신의 BootStrapper를 보여줄 수 있습니까? 둘째로 당신은 DI/IoC 컨테이너를 사용하고 있습니까? – mvermef

+0

또한 라벨을 사용하는 이유는 무엇입니까? 스타일이 지정된 버튼은 레이블처럼 평범하게 보일 수 있으며 기본적으로 클릭 이벤트를 사용할 수 있습니다. – Nkosi

+0

@ Nkosi 지금 버튼을 사용하고 있습니다. 그러나 내가 시도하는 것이 무엇이든간에 비활성화되어 있습니다. IsEnabled 속성을 true로 설정해도 비활성화되어 있습니다 ...?! –

답변

3

MouseLeftButtonUp 이벤트에 연결하여 마우스 왼쪽 단추를 놓은 후 클릭 이벤트를 시뮬레이트하십시오.

cal:Message.Attach="[Event MouseLeftButtonUp] = [Action ShowAboutWindow()]" 
+0

이 시도를 게시 해 주셔서 감사합니다. 그러나 여전히 아무것도 아닙니다. 아무것도 아니야. –

+0

레이블에는 클릭 이벤트 핸들러가 없으므로이 옵션 만 사용하십시오. – mvermef

+0

@ View View 모델 또는 뷰 뒤의 코드에 'ShowAboutWindow'메소드가 어디에 있습니까? – Nkosi