Caliburn Micro自定义事件约定

时间:2012-03-22 20:38:16

标签: conventions caliburn.micro

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

例如,我希望能够设置“SelectionChanged”=> “{SelectedItemName}改变了”惯例,所以我可以这样做:

XAML:

<ListView x:Name="Items"/>

代码:

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

public void SelectedItemChanged() { ... }

我可以找到的大多数示例只是在setter中为“SelectedItem”调用方法,但是我想避免这种情况因为我使用PostSharp来处理我的INotifyPropertyChanged更新,所以使用这样的约定我不需要删除自动属性并用属性+支持字段替换它们。

1 个答案:

答案 0 :(得分:1)

我不确定是否可以为这个合适的案例创建自定义约定,但您可以使用以下语法将SelectionChanged附加到ViewModel方法:

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

在这种情况下,您无需更改SelectedItem属性