【发布时间】:2017-01-10 01:00:54
【问题描述】:
我正在使用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 无论如何都不会运行。我添加了MessageBox 以确保不是WindowManager 搞砸了。
我怎样才能实现我的愿望?
编辑 1:我之前尝试过的是将 public void Info() 方法添加到 ViewModel,因为这适用于按钮。但在这种情况下并没有。
【问题讨论】:
-
你能告诉我们你的 BootStrapper,其次你使用的是 DI/IoC 容器吗?
-
为什么还要使用标签?一个样式化的按钮看起来就像一个标签一样简单,默认情况下你的点击事件是可用的。
-
@Nkosi 我现在正在使用一个按钮,但是,无论我尝试什么,它都会被禁用。即使我将属性
IsEnabled设置为true,它也被禁用...?! -
@Çan 你有没有像
CanShowAboutWindow这样的保护属性或方法。框架使用这些保护来启用/禁用控件。 -
嗨@Nkosi,你能详细说明一下吗?
标签: c# wpf xaml caliburn.micro