WPFは、UserControlからrelaycommand
-
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上でそれを処理しなければならないとき、ユーザーコントロール自体に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>