質問

私はWPFに、正しい道を物事をやろうとしているの精神で新たなんだが、私のアプリケーションでMVVMを実装しようとしています。私はジョシュ・スミスによって頻繁に言及した物品の使用を作った、と離れて私が知っている方法を少し理解することから、それは少し困惑私を残しています。

具体的には、私は、ページ上で直接ボタンを処理するためにRelayCommandオブジェクトを使用するページを持っており、これは大丈夫です。しかし、(保存)ボタンは、究極的にも他のボタンが含まれていますし、コントロールがページ数に使用されるユーザーコントロールになります。

私の質問はこれです。どのように私はそれを含むページにユーザーコントロール(すなわちのviewmodel)からのコマンドを中継していますか?私は、コマンドにバインドする場合は、

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

ユーザーコントロール上で、私は実際に私がのviewmodel上でそれを処理しなければならないとき、ユーザーコントロール自体にSaveメソッドを使用する必要があります。

缶誰ヘルプ?

役に立ちましたか?

解決

だから、あなたは親の(ページ)のDataContext(のviewmodel)にバインドする必要がありますか? RelativeSourceを使用してSaveCommandに結合してみてください。 http://msdn.microsoft.com/en -us /ライブラリ/ ms743599.aspxする

他のヒント

この 1 を探検してみてください。それはあなたにたくさんの結合とリレーコマンドのそれ用語を助けるます。

あなたの懸念を使用すると、ユーザーコントロールのDataContextのをバインドする必要があります。あなたは、あなたの保存コマンドのボタンを使用しようとしている場合。これを試してください:

<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
      <Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top