Если в моем View есть кнопка с именем, скажем, Save, то я могу добавить свойство Save в мою ViewModel, и Caliburn.Micro автоматически свяжет ее с содержимым моей кнопки. Например:
public string Save { get { return StringResources.Save; } }
Или я могу добавить метод Save в мою ViewModel, и Caliburn.Micro выполнит этот метод при нажатии кнопки. Например:
public void Save() {
Document.Save();
}
Но что, если я хочу сделать оба? C # не позволяет мне объявлять метод и свойство с тем же именем. Могу ли я использовать условные обозначения, чтобы и задавали содержимое кнопки и действие, выполняемое при нажатии?
(я знаю, что могу связать вручную одно или другое, но я бы предпочел использовать условные обозначения, если это целесообразно.)
Это общая необходимость, поэтому вы могли бы подумать, что она будет встроена в Caliburn.Micro, но, похоже, это не так. Я видел некоторый код, который расширяет соглашения для поддержки этого (и я опубликую его как ответ, если ничего не выйдет лучше), но это обходной путь с некоторыми причудливыми причудами - поэтому я хотел бы услышать, если кто-нибудь еще сделал эту работу более чистой.
Примечание: я видел этот похожий вопрос , но, похоже, речь идет о том, хорошая это идея или нет; Я спрашиваю о механике. (Я оставляю за собой право судить, хорошая ли это идея, пока не увижу механику. (Ухмыляется))