我是WPF的新手,本着尝试做事的精神,正确的方法试图在我的应用程序中实现MVVM。我已经使用了Josh Smith经常提到的文章,除了让我意识到我知之甚少之外,它让我有点难过。
具体来说,我有一个页面使用RelayCommand对象直接在页面上处理按钮,这很好。但是,按钮(保存)最终将位于用户控件上,该控件还将包含其他按钮,并且控件将用于多个页面。
我的问题是这个;如何将命令从用户控件中继到包含它的页面(即viewmodel)?如果我绑定命令
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(
param => this.Save(),
param => this.CanSave
);
}
return _saveCommand;
}
}
在用户控件上,我需要在用户控件本身上使用Save方法,实际上我应该在viewmodel上处理它。
有人可以帮忙吗?
答案 0 :(得分:0)
那么,您需要绑定到父级(页面)DataContext(viewmodel)吗?尝试使用RelativeSource绑定到SaveCommand:http://msdn.microsoft.com/en-us/library/ms743599.aspx
答案 1 :(得分:0)
尝试探索此one。它将对你的绑定和继电器命令有很大的帮助。
考虑到您的需要,您需要绑定用户控件的datacontext。如果您要使用按钮进行保存命令。试试这个:
<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }">
<Button x:Name="btnSave" Command="{Binding SaveCommand}"/>
</Grid>