You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RequiredStringValidationBehavior始终无效,输入匹配文本仍验证失败求排查

问题根源

你这段代码的核心问题是**RequiredString只获取了第二个Entry的初始文本值,没有和它的Text属性建立动态绑定**。

在初始化RequiredStringValidationBehavior时,你直接赋值了myLayout.Children.OfType<Entry>().ElementAt(1).Text,这只会取到该Entry在此时的文本(初始为空字符串)。后续你在第二个Entry中输入内容时,RequiredString的值不会自动更新,始终保持初始的空值。所以第三个Entry无论输入什么,都会和空值对比,自然判定为无效。

修复方案

需要将RequiredString与第二个Entry的Text属性建立动态绑定,这样当第二个Entry的文本变化时,RequiredString会同步更新。

修改后的代码示例:

StackLayout myLayout = new StackLayout
{ 
    Children =
    {
        new Entry(),
        // 先获取第二个Entry的引用
        new Entry(),
        new Entry()
    }
};

var referenceEntry = myLayout.Children.OfType<Entry>().ElementAt(1);
var targetEntry = myLayout.Children.OfType<Entry>().ElementAt(2);

targetEntry.Behaviors.Add
(
    new RequiredStringValidationBehavior
    {
        // 使用绑定关联到第二个Entry的Text属性
        RequiredString = new Binding(nameof(Entry.Text), source: referenceEntry),
        InvalidStyle = invalidEntryStyle,
        Flags = ValidationFlags.ValidateOnValueChanging
    }
);

这样设置后,第二个Entry的文本变化会实时同步到RequiredString中,第三个Entry输入的内容就能和它正确对比,验证行为会正常工作。

内容的提问来源于stack exchange,提问作者Costas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:32:55