WPF ValidationRules禁用PropertyChanged

Lou*_*uro 5 validation wpf textbox propertychanged

我有以下文本框在viewmodel中具有propertychanged.当我插入Binding.ValidationRules并插入一些错误的值时,它不会触发propertychanged事件,我不明白为什么.有帮助吗?

<TextBox Name="RiskCode" HorizontalAlignment="Left" Margin="101.923,8,0,81" TextWrapping="Wrap" Width="56.077" MaxLength="6" Validation.ErrorTemplate="{StaticResource validationTemplate}"
         Style="{StaticResource textBoxInError}">
    <TextBox.Text>
        <Binding Path="RiskCode" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <vm:RiskCodeValidation/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

Ros*_*oss 8

使用ValidationStep.

http://msdn.microsoft.com/en-us/library/system.windows.controls.validationrule.validationstep.aspx

  • RawProposedValue - 在发生任何转换之前运行ValidationRule.
  • ConvertedProposedValue - 转换值后运行ValidationRule.
  • UpdatedValue - 更新源后运行ValidationRule.
  • CommittedValue - 在将值提交到源之后运行ValidationRule.

默认情况下,它RawProposedValue会阻止对源的绑定 - 从而导致您的混淆.改为使用其他选项:

 <Binding.ValidationRules>
   <vm:RiskCodeValidation ValidationStep="UpdatedValue" />
 </Binding.ValidationRules>
Run Code Online (Sandbox Code Playgroud)