触发工具提示通过按钮而不是动态外观

时间:2014-09-23 21:16:27

标签: c# wpf

我试图为我的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");
    }
}

1 个答案:

答案 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方法时更改。