Caliburn Micro Пользовательские мероприятия - PullRequest
1 голос
/ 23 марта 2012

Можно ли создавать собственные соглашения для событий в Caliburn Micro?Кажется, что для большинства элементов управления есть событие «по умолчанию» (например, «Нажатие» для кнопок), но я бы хотел создать свои собственные соглашения для других событий (в дополнение к значениям по умолчанию).

ДляНапример, я хотел бы иметь возможность настроить соглашение "SelectionChanged" => "{SelectedItemName} Changed", чтобы я мог сделать что-то вроде этого:

XAML:

<ListView x:Name="Items"/>

Код:

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

public void SelectedItemChanged() { ... }

Большинство примеров, которые я могу найти, это просто вызов метода из установщика для «SelectedItem», но я бы хотел этого избежать, потому что я использую PostSharp для обработки своих обновлений INotifyPropertyChanged, поэтому сСоглашение, подобное этому, мне не нужно удалять авто-свойства и заменять их свойствами + вспомогательными полями.

1 Ответ

1 голос
/ 28 марта 2012

Я не уверен, возможно ли создать пользовательское соглашение для этого соответствующего случая, но вы можете просто прикрепить SelectionChanged к вашему методу ViewModel, используя следующий синтаксис:

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

В этом случае вам не нужно изменять свойство SelectedItem

...