我试图为我的RadMaskedTextBox设置验证错误,目前我能够做到这一点,但它是动态的,我想改变它。
如果我只设置范围< 250,我在文本框中放入500,它将触发并出现验证错误。
我想要发生的是验证错误仅在按下我的按钮时发生。我可以问一下我该如何转换呢?
的Xaml
<ControlTemplate x:Key="validationTemplate">
<DockPanel>
<AdornedElementPlaceholder />
<TextBlock FontSize="20" Foreground="Red">Error!</TextBlock>
</DockPanel>
</ControlTemplate>
<controls:RadMaskedCurrencyInput
x:Name="radMaskedCurrencyInput"
InputBehavior="Insert"
Validation.ErrorTemplate="{StaticResource validationTemplate }"
Value="{Binding Path=DecimalValue,
ValidatesOnDataErrors=True,
ValidatesOnExceptions=True,
NotifyOnValidationError=false,
UpdateSourceTrigger=PropertyChanged}" />
<Button Content="Execute" cal:Message.Attach="[Click] = [ExecuteMessage]"/>
视图模型:
private decimal decimalValue;
public decimal DecimalValue
{
get { return decimalValue; }
set
{
if (value > 250)
{
throw new ValidationException("Value cannot be greater than 250.");
}
else
decimalValue = value;
this.OnPropertyChanged("DecimalValue");
}
}
答案 0 :(得分:0)
如果可以接受代码隐藏:
设置UpdateSourceTrigger=Explicit
,然后单击按钮时:
private void Button_Click(object sender, RoutedEventArgs e)
{
BindingExpression be = radMaskedCurrencyInput.GetBindingExpression(RadMaskedCurrencyInput.ValueProperty);
be.UpdateSource();
}
请参阅MSDN UpdateSourceTrigger Enumeration
当您将UpdateSourceTrigger值设置为Explicit时,源值仅在应用程序调用UpdateSource方法时更改。