У вас есть несколько вариантов, но, вероятно, лучшим ответом будет тот, который лучше всего подходит для всего остального дизайна вашего приложения. Один вариант, который не был вызван, заключается в том, что ваш child-ViewModel может иметь ссылку на parent-ViewModel (это могло быть предоставлено в исходном сообщении, открывшем дочерний элемент), и child-ViewModel может запросить parent-ViewModel любой вопрос, который ему нужен, через метод или свойство.
Пример запроса от child-ViewModel:
bool canSave = _parentViewModel.CanSave(childInfo)
Если вы хотите использовать этот дочерний элемент от нескольких типов родителей, вы можете создать интерфейс, который гарантирует, что разработчики имеют метод CanSave, который всегда можно вызывать из дочернего элемента.
interface ISaveQuerable
{
bool CanSave(YourType childInfo);
}
Это всего лишь один из вариантов, и он будет работать независимо от того, используете ли вы обмен сообщениями или прямую ViewModel для создания и связи ViewModel. Основная идея состоит в том, что вместо создания обратных вызовов, если вы знаете, что родитель должен всегда реализовывать некоторую функциональность, то предоставление этого факта в сообщении приводит в исполнение это как часть контракта сообщения. Те, кто создает дочерний элемент с помощью сообщения, должны будут предоставить что-то, что реализует интерфейс, и дочерний элемент будет гарантированно иметь что-то доступное для вызова строго типизированным и проверенным временем компиляции способом.