2012-06-11 47 views
3

我有以下文本框在视图模型中有一个属性已更改。 当我插入Binding.ValidationRules并插入一些错误的值时,它不会触发propertychanged事件,我不明白为什么。任何帮助?WPF 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> 

回答

6

使用ValidationStep

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

  • RawProposedValue - 运行的有效性规则任何转换发生之前。
  • ConvertedProposedValue - 在转换值后运行ValidationRule。
  • UpdatedValue - 在源更新后运行ValidationRule。
  • CommittedValue - 在将值提交给源后运行ValidationRule。

默认情况下,它是RawProposedValue,它可以防止发生绑定来源 - 因此您的混淆。改为使用不同的选项:

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

这就完全正确,谢谢你的眼睛开放! – Louro