WPF RelayCommand из USERCONTROL
-
24-09-2019 - |
Вопрос
Я новичок в WPF и в духе пытался сделать то, что правильный путь пытался реализовать MVVM в моем приложении. Я использовал часто упомянутую статью Джош Смита, а кроме того, заставляя меня осознать, как мало я знаю, это оставило меня немного ошенутым.
В частности, у меня есть страница, которая использует объект RelayCommand для обработки кнопки непосредственно на странице, и это нормально. Тем не менее, кнопка (Сохранение) в конечном итоге будет на контроле пользователя, которое также будет содержать другие кнопки, и элемент управления будет использоваться на нескольких страницах.
Мой вопрос в том, это; Как решить команду от управления пользователем на страницу (т. Е. ViewModel), содержащую его? Если я свяжусь с командой
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(
param => this.Save(),
param => this.CanSave
);
}
return _saveCommand;
}
}
На контроле пользователей мне нужно будет использовать метод сохранения на сам элементу управления пользователем, когда на самом деле я должен обрабатывать его на ViewModel.
Может кто-нибудь помочь?
Решение
Итак, вам нужно связать с родителями (страницей) DataContext (ViewModel)? Попробуйте привязать к Savecommand с использованием RuctiveReource: http://msdn.microsoft.com/en-us/library/ms743599.aspx.
Другие советы
Попробуйте исследовать это один. Отказ Это поможет вам многое условий привязки и команды реле.
С вашей заботой вам необходимо связать datacontext элемента управления пользователями пользователя. Если вы собираетесь использовать кнопку для вашей команды сохранения. попробуй это:
<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
<Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>