对我的RelayCommands感到困惑:
我的Usercontrol资源中有一个按钮绑定到SelectedProduct:
<TextBox Text="{Binding ModelName, BindingGroupName=Group1,
UpdateSourceTrigger=Explicit, ValidatesOnDataErrors=True,
NotifyOnValidationError=True}"/>
<Button Content="Save" Command="{Binding DataContext.SaveProductCommand,
RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
触发以下内容:
public RelayCommand<object> SaveProductCommand
{
get
{
if (_saveproductcommand == null)
_saveproductcommand = new RelayCommand<object>(SaveProductEdits, CanSaveProduct);
return _saveproductcommand;
}
}
private bool CanSaveProduct(Object param)
{
if (_ESTContext.Products.Find(SelectedProduct.ModelName) != null)
return true;
else
return false;
}
private void SaveProductEdits(object param)
{
UpdateProductBindingGroup.CommitEdit();
var mod = SelectedProduct as Product;
if (SelectedProductIndex == -1)
_products.Add(mod);
else
{
var oldmod = _products.Select(e => e).Where(e => e.ModelID == mod.ModelID).First();
if (oldmod != null)
oldmod = mod;
}
SelectedProduct = null;
}
当用户编辑文本框并单击&#34;保存&#34;按钮,我希望它评估&#34; CanSaveProduct&#34;那时候。在我看来,它是在创建ViewModel时进行评估的。我也尝试过使用SaveProductCommand.RaiseCanExecuteChanged(),但也许我把它放在错误的位置......
我正在寻找关于我做错了什么的指导,以及我如何能够执行我想要的行为