5

我有以下文本框,它们在视图模型中更改了属性。当我插入 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>
4

1 回答 1

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>
于 2012-06-11T18:43:48.123 回答