C# 在实例化C对象之前验证WPF文本框中的数据?

C# 在实例化C对象之前验证WPF文本框中的数据?,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个WPF浏览器应用程序,它带有一个列表框,其中包含有关Bicycle类的许多对象的信息。应用程序的下半部分包含许多文本框,用户可以在其中输入有关新自行车的信息。我的目标是使用验证规则——我已经使用过的规则——来显示验证错误,如果用户没有在字段中输入可接受的值,并且在所有字段通过验证测试之前不允许提交数据。我的问题是,如果数据没有绑定到实例化的Bicycle对象,我不确定如何验证数据。我是否应该在Bicycle类中创建一个接受零参数的构造函数,并将TextBox值绑定到此实例?或者是否有某种

我有一个WPF浏览器应用程序,它带有一个列表框,其中包含有关Bicycle类的许多对象的信息。应用程序的下半部分包含许多文本框,用户可以在其中输入有关新自行车的信息。我的目标是使用验证规则——我已经使用过的规则——来显示验证错误,如果用户没有在字段中输入可接受的值,并且在所有字段通过验证测试之前不允许提交数据。我的问题是,如果数据没有绑定到实例化的Bicycle对象,我不确定如何验证数据。我是否应该在Bicycle类中创建一个接受零参数的构造函数,并将TextBox值绑定到此实例?或者是否有某种方法可以将验证规则绑定到类的属性,而不创建该类的实例?来源是什么

编辑:提交时,包含用户文本框输入的Bicycle对象存储在ObservableCollection中,该集合填充列表框。如果我使用Bicycle类的一个实例来绑定数据,我不确定如何从文本框中获取数据,以便将多个唯一的Bicycle添加到ObservaleCollection


编辑:我将文本框绑定到一个独立于集合的Bicycle对象,并将其中的值传递到一个新的Bicycle对象中,当用户按下submit按钮时,该对象可以添加到集合中。我不知道如何复制一个Bicycle对象,而不只是将原始对象作为引用传递,但是将值发送到新Bicycle对象的构造函数中可能会避免这样的问题。

在您的代码隐藏中,创建Bicycle的实例。在你的代码中有一个公共属性,返回那个Bicycle实例。然后将所有文本框绑定到自行车上的属性。比如:自行车,轮胎,或者自行车,颜色,或者别的什么。然后,当用户输入完数据后,您就可以验证Bicycle对象了。如果它是有效的,你的自行车已经制造好了,你可以把它送到任何你需要存储它的地方。

只要创建一个方法,你的验证就会完成。然后在处理数据之前,调用验证类。如果通过,则返回true,如果不通过,则返回false。我建议您在Bicycle类上实现IDataErrorInfo接口,或者创建BicycleViewModel并遵循MVVM模式。然后在构造器中,您可以在必需字段上设置初始错误,绑定应该会发现这一点。这可能需要一些修改,因为它不会重用现有的验证规则。是否有方法返回自行车的实际值而不是参考值,以便如果用户在文本框中输入不同的值,他们可以创建一个可以存储的新自行车,并且文本框的值不会仍然绑定到旧自行车对象的内容?在这种情况下,我要做的是在自行车对象上放置一个复制构造函数。然后,我将自行车编辑器的自行车对象设置为原始自行车的副本。那样的话,如果我们不喜欢这些改变,原来的就不会改变。如果我们接受更改,我们将原始自行车设置为自行车编辑器的自行车,并进行更改。