В настоящее время мы пишем приложение GUI с использованием WPF и .Net4.5.Текстовое поле, не отображающее красную ошибку валидации в WPF
Одна из наших страниц содержит TabControl
с пользовательскими UserControl
с, как TabItem
s. Эти UserControl
s просто содержат список доступных для редактирования TextBox
es. У Textbox
es есть пользовательский ValidationRule
, который проверяет текст на основе регулярного выражения. Проблема в том, что эти редактируемые текстовые поля привязаны к Properties
, которые загружаются при запуске со значениями по умолчанию из текстового файла/базы данных.
Мне нужно, чтобы проверка выполнялась до того, как текстовое поле имеет фокус или до его редактирования, чтобы правильно ввести значения, введенные в текстовый файл/базу данных. В настоящее время, когда я выбираю элемент табуляции, в текстовых полях не отображается красная ошибка проверки, хотя кажется, что проверка правильной работы. Только после того, как я нажимаю элемент с ошибкой Validation
, я вижу связанный красный ящик.
Я использую UpdateSourceTrigger="PropertyChanged"
, и я могу отлаживать и видеть, что код проверки работает в нужное время, но все же красные поля не будут отображаться. Я даже добавил код для повторного запуска событий «Свойства изменен» в связанных свойствах, когда TabItem
получает фокус, но это все равно не помогает. Вот пример одного из TextBox
х годов, не показывая проверки:
<TextBox x:Name="TextBox1" Margin="10,5,5,5" Width="150" MaxLength="5" Style="{StaticResource ServiceEntryTextBox}">
<TextBox.Text>
<Binding Path="TexBox1BoundProperty" Converter="{StaticResource DoubleConverter}" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnExceptions="True">
<Binding.ValidationRules>
<validation:StringRegexFormatValidation RegexPattern="^[0-9]{0,1}.{0,1}[0-9]{1,3}$" ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Есть ли другая часть мне не хватает?
[Как выполнить проверку привязки] (https://msdn.microsoft.com/library/ms753962 (v = vs.100) .aspx) – MethodMan