我创建一个定制控制,在XAML调用时可设定为仅允许特定类型的输入:在WPF限制输入
<lib:CustomControl RestrictTo="UnsignedIntegersOnly" ... ></CustomControl>
凡UnsignedIntegersOnly是包含组枚举的一部分允许的限制。
如果用户输入了不允许的内容,控件会抛出一个验证错误,并且不允许他继续下一个表单/页面等。
我的愿景是,在构成此控件的底层文本框中,将其文本字段绑定到验证规则,该规则将作为输入传递给CustomControl XAML声明中指定的RestrictTo值。然后在该ValidationRule类中,处理RestrictTo特定验证并返回验证是否成功。
这是我不太确定如何继续。是否有可能以这种看似动态的方式将参数传递给ValidationRule?我正在设置一个属性RestrictTo,并将其传递给它的验证。
如果可能,它将如何完成?我应该使用什么样的绑定或资源链接?
我最大的问题是,我下面关注结构非常严格分离。我不想在控件的代码隐藏中有任何验证逻辑。我希望它通过绑定进行无缝集成。根据我的经验,保持非常高的模块性和分离性使维护代码非常容易。很多时候我必须修改代码,这些代码非常非常耦合,并且需要一直进行小的修改。 我喜欢这个Masked TextBox,但不幸的是我不能使用像这样的任何第三方软件包(策略)。 –
关于字段,它们是一个字符串或一个数字,因此每个类型和每个控件应该有一个验证规则。如果它比这更复杂,也许你可以创建多个控件而不是一个。您可以通过仅使用有效值的ListBox或ComboBox来限制用户。您是否尝试了我在http://programmers.stackexchange.com/questions/203590/is-there-an-effective-way-for-creating-complex-forms?答案中解释的模式?另外,我建议你编辑你的问题,并发布更多的细节和更多的代码,一个具体的案例,例如你卡住的地方。 – Aybe