WPF首次加载时未触发验证

3
在Prism应用程序中,我想要使用验证技术。我已经在ViewModel中实现了INotifyDataError接口,但是发现当控件第一次加载时,验证解决方案并没有被触发。
然后我找到了一个与之类似的问题:'wpf Validation Binding not fired on First Load'.
我找到了解决方案,解决了WPF在第一次加载数据上下文时不触发验证的问题。
<TextBox Grid.ColumnSpan="2" Grid.Row="1" x:Name="textBoxFolder" Margin="2,4">
    <TextBox.Text>
        <Binding Path="this.MovieFolder" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <!--  Validation rule set to run when binding target is updated. -->
                <Rules:MandatoryInputRule ValidatesOnTargetUpdated="True" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

正如您所看到的,ValidatesOnTargetUpdated="True" 是关键点,这个属性会让WPF在第一次加载数据上下文时触发验证。

但我认为这是一个不好的解决方案。我需要为每个要验证的控件添加 Binding.ValidationRules

有没有更好的解决办法呢?


"ValidatesOnDataErrors=True" 尝试使用 dis。 - Dhru 'soni
1个回答

6

好的,我已经解决了:当元素与一个简单属性绑定时,你可以通过强制执行验证来实现 - ValidatesOnTargetUpdated:

 <rules:MyValidationRule ValidatesOnTargetUpdated="True"  ValidationType="notnull"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接