WPF relaycommand от usercontrol - PullRequest
       24

WPF relaycommand от usercontrol

2 голосов
/ 07 апреля 2010

Я новичок в WPF и в духе попыток сделать все правильно, пытался реализовать MVVM в моем приложении.Я использовал часто упоминаемую статью Джоша Смита, и помимо того, что я понял, как мало я знаю, это оставило меня в тупике.

В частности, у меня есть страница, которая использует объект RelayCommandобрабатывать кнопку прямо на странице, и это нормально.Однако кнопка (сохранить) в конечном итоге будет на пользовательском элементе управления, который также будет содержать другие кнопки, и этот элемент управления будет использоваться на нескольких страницах.

Мой вопрос такой;Как передать команду из пользовательского элемента управления на страницу (т.е. viewmodel), содержащую ее?Если я свяжусь с командой

public ICommand SaveCommand
{
  get
  {
    if (_saveCommand == null)
    {
      _saveCommand = new RelayCommand(
          param => this.Save(),
          param => this.CanSave
          );
    }
    return _saveCommand;
  }
}

на пользовательском элементе управления, мне нужно будет использовать метод Save на самом пользовательском элементе управления, тогда как на самом деле я должен обрабатывать его на модели представления.1009 * Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

Попробуйте исследовать этот один .Это очень поможет вам в терминах связывания и передачи команд.

С вашей заботой вам нужно связать текстовый элемент пользовательского элемента управления.Если вы собираетесь использовать кнопку для сохранения команды.попробуйте это:

<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
      <Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>
0 голосов
/ 07 апреля 2010

Итак, вам нужно привязать родительский (page) DataContext (viewmodel)?Попробуйте связать с SaveCommand, используя RelativeSource: http://msdn.microsoft.com/en-us/library/ms743599.aspx

...