В моем приложении WPF есть TextBox.Я определил ControlTemplate для ошибки проверки следующим образом:
<ControlTemplate x:Key="validationTemplate">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Bottom" Text="Invalid Input: "></TextBlock>
<AdornedElementPlaceholder />
</DockPanel>
</ControlTemplate>
Мой TextBox выглядит следующим образом:
<TextBox Validation.ErrorTemplate="{StaticResource validationTemplate}">
<TextBox.Text>
<Binding Path="TEXT1" ValidatesOnDataErrors="True" validatesOnExceptions="True">
</Binding>
</TextBox.Text>
</TextBox>
Теперь, если в мой TextBox добавлен ValidationRule, а затем я проверяю там, ошибкаШаблон применяется правильно.Но я не могу этого сделать из-за какой-то другой проблемы.
Поэтому мне нужно проверить содержимое TextBox в PreviewLostKeyboardFocus.Я проверяю TextBox.Теперь я хочу установить шаблон ошибки для TextBox в коде, но я не могу это сделать !!
Я пробовал это, но это не работает, как задумано ::
private void blockTextBox_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextBox txtBox = sender as TextBox;
txtBox.Template = this.FindResource("validationTemplate") as ControlTemplate;
//this behaves strange; it removes the TextBox and places the ErrorTemplate.
//I want it to behave like the way WPF does internally wherein it places
//the error template around TExtBox
}
Вопрос 1: Я хочу знать, как добавить шаблон ошибки в TextBox
Вопрос 2: Я хочу знать, как установить сообщение об ошибке шаблона элемента управления из кода.Как, например, я хочу изменить сообщение об ошибке по умолчанию «Invalid Input:» на «Invalid Input: Пожалуйста, введите правильный ввод».
Я хочу сделать вышеупомянутые вещи в коде только !!!!
РЕДАКТИРОВАТЬ 1:
проблема заключается в том, как установить из кода за Validation.HasError как true, потому что я не использую какой-либо Validator(или что я должен установить из кода, за которым применяется ValidationTemplate ??))
РЕДАКТИРОВАТЬ 2:
Я делаю привязку XML, поэтому я не могуреализовать IDataErrorInfo !!Я хочу добиться этого только из кода позади!Есть ли способ установить Validation.HasError из кода позади ??