首次加载时 WPF 验证未触发

huo*_*125 3 c# validation wpf mvvm

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

然后我发现了同样的问题,比如' wpf Validation Binding not fire 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>
Run Code Online (Sandbox Code Playgroud)

如您所见,这ValidatesOnTargetUpdated="True"是关键点,此属性将使 WPF 在第一次加载数据上下文时触发验证。

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

有没有好的办法解决问题。

Dhr*_*oni 5

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

 <rules:MyValidationRule ValidatesOnTargetUpdated="True"  ValidationType="notnull"/>
Run Code Online (Sandbox Code Playgroud)