WPF验证规则禁用PropertyChanged

6
我有一个文本框,它在视图模型中具有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>
1个回答

9

使用 ValidationStep

http://msdn.microsoft.com/zh-cn/library/system.windows.controls.validationrule.validationstep.aspx

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

默认情况下,它是 RawProposedValue,这会阻止从绑定到源的操作 - 因此您感到困惑。请改用其他选项:

 <Binding.ValidationRules>
   <vm:RiskCodeValidation ValidationStep="UpdatedValue" />
 </Binding.ValidationRules>

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