2011-02-08 4 views
0

У меня есть приложение wpf-mvvm.Можно ли установить свойство исходного объекта, при проверке?

В приведенном ниже коде «PartBPremiumBuydown» является экземпляром класса. который имеет два свойства => 1. Значение. и 2. HasValidationError.

Свойство «Значение» используется для привязки к текстовому полю. Если есть какая-либо ошибка проверки ... Могу ли я установить HasValidationError = true?

<TextBox ToolTip="{Binding RelativeSource={RelativeSource Self}, 
         Path=(Validation.Errors).CurrentItem.ErrorContent}"> 
         <TextBox.Text> 
          <Binding Path="PartBPremiumBuydown.Value" 
             ValidatesOnDataErrors="True" 
             UpdateSourceTrigger="PropertyChanged" 
          Converter="{x:Static localns:Converters.DecimalToCurrency}"> 
           <Binding.ValidationRules> 
            <localns:CurrencyRule /> 
           </Binding.ValidationRules> 
          </Binding> 
         </TextBox.Text> 
        </TextBox> 

ответ

1

Вы должны PartBPremiumBuydown реализовать интерфейс IDataErrorInfo, похожий на приведенный ниже код:

public string Error { get; private set; } 
public string this[string propertyName] 
{ 
    get 
    { 
     string mError = string.Empty; 
     if (propertyName == "Value" 
      && !<insert your rule>) 
     { 
      mError = "Validation error text." 
     } 
     Error = mError; 
     return (string.IsNullOrWhiteSpace(mError))// if NOTHING 
      ? null        // then return null 
      : mError;        // else return error 
    } 
} 

Теперь, когда вы связываете свой TextBox к Value, если пользователь вводит в текст, который нарушает ваши правила, ошибка проверки будет отображаться в TextBox.

+0

См. [Применение правил бизнес-данных с WPF] (http://msdn.microsoft.com/en-us/magazine/ff714593.aspx) –