在Caliburn.Micro ActionMessage中使用TagProperty

时间:2014-07-16 21:46:11

标签: c# wpf data-binding caliburn.micro

我的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是不好的做法。也许有人知道更好的解决方案?

1 个答案:

答案 0 :(得分:1)

$ this.Tag应该在您的Execute方法中为您工作可能只是一个对象类型将其转换为您需要的(字符串?)。

public void Execute(object p){
   if(p != null){ 
     var tag = (string)p;
   }
}