2016-05-11 4 views
0

Я новичок в WPF, и у меня есть простое окно входа в систему, реализованное в mvvm с логином/паролем с помощью кнопки. my viewmodel реализует интерфейс idataerrorinfo для проверки текстовых полей. мое намерение состоит в том, чтобы иметь пустые текстовые поля при загрузке и текстовые поля щелчка, которые должны быть проверены, чтобы показывать ошибки (например, поле имени пуст) только при входе в систему. Я использовал связывание в качествеWPF Validation on textbox только на buttonclick not on windowload

<TextBox x:Name="txtName" Text="{Binding Path=Name,UpdateSourceTrigger=LostFocus,ValidatesOnDataErrors=True,ValidatesOnNotifyDataErrors=False}"/> 

стиля для ошибки подсказки

<Style TargetType="TextBox"> 
<Style.Triggers> 
<Trigger Property="Validation.HasError" Value="true"> 
<Setter Property="ToolTip" 
     Value="{Binding RelativeSource=      {x:StaticRelativeSource.Self}, 
       UpdateSourceTrigger=PropertyChanged, 
       Path=(Validation.Errors)[0].ErrorContent}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 

и реализовать это свойство IDataErrorInfo с валидациями в ViewModel, как показано ниже

public string this[string columnName] 
{ 
    get 
    { 
    return Validate(columnName); 
    } 
} 

я связывание DataContext для ViewModel объект класса. Его работы, как ожидалось, за исключением ошибки, отображаются в текстовом поле на окне. Я хочу это только при загрузке окна. Пожалуйста, помогите, если я пропустил что-нибудь. Благодарю.

+0

фиксированное форматирование – winhowes

ответ

0

Вам необходимо установить Mode = TwoWay, а также изменить UpdateSourceTrigger = PropertyChanged. Попробуйте код ниже.

<TextBox x:Name="txtName" Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, ValidatesOnNotifyDataErrors=False}" /> 

Кроме того, необходимо реализовать интерфейс INotifyPropertyChanged и инициировать событие PropertyChanged на свойства строки в ViewModel.