在Silverlight中选择EdItem changed和Command
我是Silverlight的新手,在命令方面有一些问题。我有一个DataGrid,它绑定到我的ViewModel中的ObservableCollection。我还有一个按钮在Silverlight中选择EdItem changed和Command,silverlight,silverlight-4.0,command,Silverlight,Silverlight 4.0,Command,我是Silverlight的新手,在命令方面有一些问题。我有一个DataGrid,它绑定到我的ViewModel中的ObservableCollection。我还有一个按钮 <Button Command="{Binding AddCommand}">Add</Button> 问题是CommandBinding似乎对SelectedItem的更改没有反应。如果我运行我的应用程序,没有选择任何网格行,我可以看到CanAdd函数被调用。但是,如果我单击某个项目,则不会调用添
<Button Command="{Binding AddCommand}">Add</Button>
问题是CommandBinding似乎对SelectedItem的更改没有反应。如果我运行我的应用程序,没有选择任何网格行,我可以看到CanAdd函数被调用。但是,如果我单击某个项目,则不会调用添加函数-尽管我可以看到视图模型中的属性SelectedItem已更改??我做错了什么?
是否可以在不使用外部库的情况下使用命令?
我曾经在WPF中编写类似的代码,但是在我使用的GenericCommand类中的WPF中
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
问题是Silverlight中没有CommandManager这样的东西。您的ViewModel需要实现INotifyDataErrorInfo接口。此外,CanAdd方法需要更改为类似这样的内容
if (SelectedItem == null)
{
base.AddValidationErrorMessage("SelectedItem", "Select something....");
return false;
}
else
{
base.RemoveValidationErrorMessage("SelectedItem");
return true;
}
再看看这些文章,我想你会发现它们很有帮助
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
if (SelectedItem == null)
{
base.AddValidationErrorMessage("SelectedItem", "Select something....");
return false;
}
else
{
base.RemoveValidationErrorMessage("SelectedItem");
return true;
}