我的WPF应用程序我使用Caliburn.Micro。在SampleView中,我有类似的代码
<Button Tag="1" Content="Execute" cal:Message.Attach="[Event Click] = [Action Execute]"/>
当然在SampleViewModel中我有这样的方法:
public void Execute() {
//do something
}
但现在我想从TagProperty传递给Execute方法值,我找到的唯一解决方案(在xaml中)是:
<Button Content="Execute" Tag="1" cal:Message.Attach="[Event Click] = [Action Execute($source})]"/>
并在ViewModel中:
public void Execute(FrameworkElement elem) {
var tag=elem.Tag;
//do something
}
在我看来,在ViewModel中使用FrameworkElement是不好的做法。也许有人知道更好的解决方案?
答案 0 :(得分:1)
$ this.Tag应该在您的Execute方法中为您工作可能只是一个对象类型将其转换为您需要的(字符串?)。
public void Execute(object p){
if(p != null){
var tag = (string)p;
}
}