IDataErrorInfo not updated
本文关键字:updated not IDataErrorInfo | 更新日期: 2023-09-27 18:25:12
我遇到IDataErrorInfo接口和当前正在编程的向导的问题。
我的程序的目的是询问一些输入(通常用条形码扫描仪完成),并根据输入开始特定的序列。这是按计划进行的。为了确保捕捉到错误的扫描,所有输入都用事件(OnValueParseFailed)进行检查。如果触发此事件,我当前的文本框将被聚焦,并且所有文本都被选中:
this.MyWizardViewModel.ValueParseFailed += (s, e) =>
{
switch (e.Parameter)
{
case "ProductionOrder":
this.TextBoxProduction.Focus();
this.TextBoxProduction.SelectAll();
break;
接口本身是这样包含的:
public string this[string name]
{
get
{
string result = null;
if ((name == "ProductionOrder") && (!string.IsNullOrEmpty(this.ProductionOrder)))
{
if (this.System.FirmwareVersion == 0)
result = Lang.Strings.WrongEntry;
}
这是第一次运行。但是,如果向导完成或中止,并在不关闭应用程序的情况下再次运行,则不会显示错误消息。
重置只是将应用程序返回到默认值。
public void ResetApplikation()
{
this.System.Clear(); // reset System values
this.ProductionOrder = string.Empty;
this.BmsTypeCode = string.Empty;
this.CellStack1TypeCode = string.Empty;
this.CellClass1 = string.Empty;
this.CellStack2TypeCode = string.Empty;
this.CellClass2 = string.Empty;
this.IsSystemProgrammed = false;
this.IsSystemParameterized = false;
this.MyMachine.Abort(); // reset wizard state
}
在调试时,我可以看到接口被正确地切换。但是没有显示错误。
在XAML中,绑定设置为双向
<TextBox Name="TextBoxProduction" Grid.Row="2" Width="200" Margin="10"
Style="{StaticResource TextBoxNormal}" Loaded="TextBoxProduction_Loaded"
Text="{Binding Path=ProductionOrder, ValidatesOnDataErrors=True,
NotifyOnValidationError=True, Delay=100,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
我使用的是MahApps,但由于文本框类是基于wpf文本框的,我怀疑这个元素中的错误是问题所在。任何建议都很好
非常感谢。
Domysee的回答帮助了我。
实现INotifyDataErrorInfo而不是IDataErrorInfo是一个重大更改,但它解决了问题!