【问题标题】:WPF how to filter data-binded element? MVVM relatedWPF如何过滤数据绑定元素? MVVM相关
【发布时间】:2012-11-03 14:15:57
【问题描述】:

我有一个文本框,它的 Text 属性绑定到一个字符串(在视图模型中)

问题:我如何才能使该文本框中的内容恰好是 10 个字符长(或仅用英文字母,仅作为示例)。

问题是它直接写入viewModel的字符串变量。所以我唯一的想法是为此配备一个转换器。但即使转换器没有返回任何内容,我如何通知用户出现问题? (以“错误 - 长度!= 10”为例)

【问题讨论】:

  • 将问题视为验证而不是过滤更有用。正如此处的答案之一所示,WPF 提供了多种支持,但 IDataErrorInfo 是 MVVM 的首选方法(请参阅 Adi Lester 的答案)。干杯

标签: .net wpf validation mvvm


【解决方案1】:

我建议您查看IDataErrorInfo interface。 你可以让你的视图模型实现这个接口来定义验证逻辑。例如:

public class ViewModel : IDataErrorInfo
{
    public string MyText { get; set; }

    #region IDataErrorInfo Members

    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get
        {
            if (columnName == "MyText")
            {
                if (MyText.Length != 10)
                {
                    return "Text should be exactly 10 letters.";
                }
            }

            return null;
        }
    }

    #endregion
}

可以在here 找到一个很好的示例和进一步的定制。

【讨论】:

    【解决方案2】:

    你必须使用WPF Data Validation

    【讨论】:

    • 虽然这可能会回答问题,但it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2018-11-27
    • 2020-12-04
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多