是否可以为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更新,所以使用这样的约定我不需要删除自动属性并用属性+支持字段替换它们。
答案 0 :(得分:1)
我不确定是否可以为这个合适的案例创建自定义约定,但您可以使用以下语法将SelectionChanged附加到ViewModel方法:
<ListView x:Name="Items" cal:Message.Attach="[Event SelectionChanged] = [Action SelectedItemChanged()]"/>
在这种情况下,您无需更改SelectedItem属性