2017-01-10 11 views
1

私はWPFと一緒にCaliburn.Microを使用しています。私は、ラベルがクリックされたときに任意のコードを実行したい。私はいくつかのグーグルを試み、約cal:Message.Attachを発見した。キャリバーマイクロコードをクリックしてラベルをクリック

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がそれを台無しにしていないことを確認しました。

私は自分が望むものをどのように達成できますか?

EDIT 1:私が以前に試したことは、ViewModelpublic void Info()メソッドを追加していました。これはボタンで機能します。しかし、この場合はそうではありませんでした。

+1

私たちにあなたのBootStrapperを見せることができますか、第2にDI/IoCコンテナを使用していますか? – mvermef

+0

なぜラベルを使用するのですか?スタイル付きのボタンはラベルと同じように見える場合があり、デフォルトではクリックイベントが使用可能になります。 – Nkosi

+0

@Nkosi今はボタンを使用していますが、何をしようとしても無効です。プロパティIsEnabledをtrueに設定しても、無効になっています...? –

答えて

3

MouseLeftButtonUpイベントにアタッチして、マウスの左ボタンを放した後にクリックイベントをシミュレートしてみます。

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

この試みを送信いただきありがとうございます。しかし、まだ何も起こりません。ただ何も。 –

+0

Labelにはクリックイベントハンドラがないため、オプションのみです。 – mvermef

+0

@Chanビューモデルまたはビューの背後にあるコードの 'ShowAboutWindow'メソッドはどこですか? – Nkosi

関連する問題