首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要在ValidationRule上调用ValidationRule派生类需要使用LostFocus基构造函数?

为什么要在ValidationRule上调用ValidationRule派生类需要使用LostFocus基构造函数?
EN

Stack Overflow用户
提问于 2015-02-19 19:14:53
回答 1查看 99关注 0票数 0

我试图理解为什么如果我不调用ValidationRule基构造函数,比如

代码语言:javascript
复制
public GrainWeightValidate() : base(ValidationStep.UpdatedValue, true) { }

然后,当应该在LostFocus上调用验证规则时(如下面所示,在TextBox上使用),当TextBox确实失去焦点时,根本不会调用Validate函数。但是,如果我将下面的UpdateSourceTrigger更改为PropertyChanged,则调用GrainWeightValidate.Validate(),但会无限调用,直到出现堆栈溢出。以下是相关的XAML:

代码语言:javascript
复制
<Viewbox Grid.Row="1" Grid.Column="4">
    <AdornerDecorator>
        <TextBox Name="GrainWeightTextBox" MinWidth="23">
            <TextBox.Text>
                <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="LostFocus">
                    <Binding.ValidationRules>
                        <local:GrainWeightValidate/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>
    </AdornerDecorator>
</Viewbox>
EN

回答 1

Stack Overflow用户

发布于 2015-02-19 19:55:30

您在StackOverflowException中运行是因为RelativeSource Self绑定。验证不是错误的来源。

在这里,您将Text DependencyProperty (TextProperty)绑定到同一个TextBox的Text属性。它的实现中的Text属性只需调用相应的DependencyProperty

因此,当失去对TextBox的关注时,绑定更新,更新Text,更新TextProperty DependencyProperty,更新Text,更新TextProperty.等等

移除RelativeSource属性,并使Path=“.”值的目标是ViewModel上的有效属性。

如果您不使用MVVM,那么您可能会像这样欺骗绑定:

代码语言:javascript
复制
    <TextBox Name="GrainWeightTextBox" MinWidth="23">
        <TextBox.Text>
            <Binding ElementName="GrainWeightTextBox" Path="Tag" UpdateSourceTrigger="LostFocus">
                <Binding.ValidationRules>
                    <local:GrainWeightValidate/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>

然后,通过访问Tag属性在代码后面获取您的值。它真的很脏,但它应该能用.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28614940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档