我的项目中有一个对话框,用户在其中输入一些值,当他点击确定时,我将一个项目添加到我的数据库中。我正在使用Entity Framework,所以我添加到数据库代码是这样的:
TransactionItem _item = new TransactionItem();
_item.DoctorID = (int)cmbDoctor.SelectedValue;
_item.TransactionCategoryID = (int)_dlg.cmbCat.SelectedValue;
_item.TransactionMethodID = (int)_dlg.cmbMethod.SelectedValue;
_item.Amount = int.Parse(_dlg.txtAmount.Text);
_item.DocumentID = _dlg.txtDocNum.Text;
_item.Info = _dlg.txtInfo.Text;
_item.Date = _dlg.dteDate.SelectedDate.ToString();
_db.TransactionItems.Add(_item);
_db.SaveChanges();
但问题是没有什么可以绑定和启用验证。我尝试在我的窗口中创建一个空对象并将文本框绑定到它,但它有其自身的问题并且没有按预期工作。我只想在用户输入值或点击确定时检查所有字段是否有效(例如,问题之一是如果用户没有输入任何值,即使启用了stringnotnull
验证器,它仍然有效,但是最重要的问题是它自动将文本框的文本设置为空并将其标记为空值)。
我已经制作了自己的验证器,下面是我如何在我的一个文本框中实现它们的示例:
<TextBox Name="txtAmount" HorizontalAlignment="Left" Height="23" Margin="83,169,0,0" VerticalAlignment="Top" Width="224" Tag="T">
<TextBox.Text>
<Binding Path="myitem" ElementName="myWindow" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<Validators:StringNullValidationRule/>
<Validators:IsNumericValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>