2012-03-22 79 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屬性