Wpf 验证命令以仅允许在数据库中输入1行
我正在创建一个应用程序,允许用户使用MVVM和EF将其详细信息输入数据库。我有一个用户控件,允许用户在数据库中输入一组详细信息 在此应用程序中,Wpf 验证命令以仅允许在数据库中输入1行,wpf,entity-framework,mvvm,command,Wpf,Entity Framework,Mvvm,Command,我正在创建一个应用程序,允许用户使用MVVM和EF将其详细信息输入数据库。我有一个用户控件,允许用户在数据库中输入一组详细信息 在此应用程序中,视图模型包含属性、命令和CRUD操作 我想要实现的是允许使用此应用程序的用户输入他们的详细信息,但一旦将一行输入到数据库中,就完全禁用命令,或者抛出一个异常,说明添加了一行 我有一个选项卡控件,用户可以输入他们的详细信息,然后使用数据网格直观地查看添加的详细信息 这有可能实现吗?如何做到这一点?遍历这些行,然后找到该行 以下是我的代码片段,与我的相关 视
视图模型
包含属性、命令和CRUD操作
我想要实现的是允许使用此应用程序的用户输入他们的详细信息,但一旦将一行输入到数据库中,就完全禁用命令
,或者抛出一个异常,说明添加了一行
我有一个选项卡控件
,用户可以输入他们的详细信息,然后使用数据网格直观地查看添加的详细信息
这有可能实现吗?如何做到这一点?遍历这些行,然后找到该行
以下是我的代码片段,与我的相关
视图模型
private ICommand _AddCommand;
public ICommand AddCommand
{
get
{
if (this._AddCommand == null)
{
this._AddCommand = new RelayCommand(this.SaveExecute, this.SaveCanExecute);
}
return this._AddCommand;
}
}
private bool SaveCanExecute()
{
return !string.IsNullOrEmpty(Name);
}
private void SaveExecute()
{
InsertDetail();
}
xaml
由于我对WPF和MVVM不熟悉,因此非常感谢您的帮助或指导。最简单的方法是在逻辑进入SaveExecute()方法后禁用该按钮。这将阻止发出新命令
之后,您可以启用或禁用它。您可以使用EF创建一个
count
方法,然后在SaveExecute()
命令方法中,调用count
,类似这样
public int Count(int _ID)
{
DBEntities context = new DBEntities();
return (from o in context.Entities
where o.EntityID == _ID
select o.EntityID).Count();
}
然后,在你的命令方法中
private void SaveExecute() //RelayCommand
{
if (Count(1) == 0)
{
InsertDetails(this); //Insert method using EF
MessageBox.Show("Items have been addded.");
}
else
{
MessageBox.Show("An Item already exists, unable to add another one.");
}
}
希望这有帮助 @Christian谢谢你的回复。我做过类似的事情,但我想知道并希望能够实现我在问题^^中提出的要求。您还想选择网格中的数据,或者只是禁用命令?主要是禁用命令,因为用户仍然希望能够更新数据网格中的数据。这非常有效,我不知道这有多简单——非常感谢!
private void SaveExecute() //RelayCommand
{
if (Count(1) == 0)
{
InsertDetails(this); //Insert method using EF
MessageBox.Show("Items have been addded.");
}
else
{
MessageBox.Show("An Item already exists, unable to add another one.");
}
}