【问题标题】:How to Implement IDataErrorInfo within a WPF Page (A Partial Class)如何在 WPF 页面中实现 IDataErrorInfo(部分类)
【发布时间】:2018-10-15 03:08:07
【问题描述】:

这是我第一次使用 WPF。我正在开发一个库存管理系统。我的设计模型有单个窗口,其中一个框架在单击不同按钮时加载不同的页面。在将新库存添加到数据库中时,我想确保数据验证。在这方面我选择了 IDataErrorInfo。我必须实现接口但无法实现只写为public partial class AddInventoryPage : Page, IDataErrorInfo。这显示错误。类的签名如下

public partial class AddInventoryPage : Page

我也尝试过,但无法实现该功能。即使我在 IDataErrorInfor 部分中放置了一个断点,但控件并没有去那里。

namespace IMS
{
    public partial class AddInventoryPage : IDataErrorInfo
    {
    //code here
    }
    public partial class AddInventoryPage : Page
    {
    //code here
    }
}

由于我的库存模块已完成,但数据验证除外,并且我正在处理销售模块;这不是改变我的设计模型的解决方案。此外,我没有使用任何像 MVVM 这样的设计模式。它是直的。 期待解决方案。

【问题讨论】:

  • 请更具体然后“不起作用”。这在编程论坛中从来都不是一个有用的部分。 IIRC,可以命令大多数 IDE 为接口中的所有内容自动提供空函数(为强制异常抛出为空)。然后你只需将它们编码出来。
  • Moreover, I'm not using any Design Pattern like MVVM. 与 WPF 你可能应该是。这是一个陡峭的学习曲线,但一旦你的应用变得有点复杂,它就会得到回报
  • 丹尼斯,感谢您的宝贵建议。正如我所说,我对 WPF 并不陌生,但我对 C# 也很陌生,这是第一次开发除小型控制台保护之外的东西的经验。直到现在,我已经看到了太多关于 MVVM 的知识,并且知道它现在的重要性。很快,我将把我的这个项目转变为 MVVM 模式。
  • 我必须支持 Dennis Kuypers 所说的话。 WPF/UWP 和 XAML 的设计实际上考虑了 MVVM 模式。虽然您可以使用任何模式,但这样做会失去大约 90% 的功能,并且在每个角落都会遇到问题。

标签: c# wpf idataerrorinfo


【解决方案1】:

对属性“名称”进行验证的示例

public class AddInventoryPage : IDataErrorInfo
{
    public string Name { get; set; }       

    public string Error => null;

    public string this[string columnName]
    {
        get
        {
            switch(columnName)
            {
                case nameof(Name):
                    if (Name == string.Empty) return "Name can not be empty";
            }

            return string.Empty;
        }
    }
}
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多