2012-03-22 80 views
1

是否可以创建自定义约定在卡利微事件?似乎大多数控件都有一个“默认”事件(例如按钮的“点击”),但我想为其他事件(除了默认设置)创建自己的约定。卡利微自定义事件约定

举例来说,我希望能够建立一个 “的SelectionChanged”=> “{} SelectedItemName更改” 约定,所以我可以做这样的事情:

XAML:

<ListView x:Name="Items"/> 

代码:

public ObservableCollection<string> Items; 
public string SelectedItem { get; set; } //Wired automatically by Caliburn 

public void SelectedItemChanged() { ... } 

大多数的例子,我可以找到刚刚从制定者“的SelectedItem”中调用该方法,但我想避免这种情况,因为我用PostSharp处理我INotifyPropertyChange更新,所以像这样的约定,我不需要删除自动属性,并用属性+后台字段替换它们。

+1

不完全相关但很有趣:http://caliburnmicro.codeplex.com/discussions/243905 – 2012-04-02 14:53:28

回答

1

我不知道是否有可能为这个适当的情况下创建自定义convenition,但使用下面的语法,你可以简单地附上的SelectionChanged到您的视图模型方法:

<ListView x:Name="Items" cal:Message.Attach="[Event SelectionChanged] = [Action SelectedItemChanged()]"/>

在这种情况下,你不需要更改SelectedItem属性