首次加载时,WPF验证不会触发

时间:2015-03-05 02:29:09

标签: c# wpf validation mvvm

在Prism应用程序中,我想使用validation.And我在ViewModel中实现了INotifyDataError接口,但我发现第一次加载控件时不会触发验证解决方案。

然后我发现了同样的问题,例如' wpf验证绑定未在首次加载时触发 '

我找到了解决问题的解决方案 WPF在第一次加载datacontext时没有解雇验证是:

<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"是关键点,当第一次加载datacontext时,此属性将使WPF触发验证。

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

有没有一种解决问题的好方法。

1 个答案:

答案 0 :(得分:3)

好的我已经解决了:当元素绑定了一个简单属性时强制验证 - ValidatesOnTargetUpdated:

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