Возникли проблемы с вводом значений времени с помощью MaskedTextbox

Я использую MaskedTextbox для .NET 3.5 SP1 из набора инструментов WPF. У меня есть MaskedTextbox на странице WPF, он отлично заполняется из базы данных SQL Server, но когда я пытался изменить значение, ничего не происходит. Я могу выбрать что угодно, но ввод текста поверх него, нажатие клавиши удаления или что-то еще, о чем я могу думать, ничего не делает со значением там. Я хочу использовать это, чтобы позволить пользователю вводить или редактировать значение времени, например: 9:30 будет отображаться как «09:30». Вот XAML, который я указал:

<cusControls:MaskedTextBox x:Name="mtbTime"
        Mask="90:00 >LL" Margin="5,0,0,0"
        Text="{Binding ElementName=ThisDateTime,Path=TimePart,Converter={StaticResource NullableTimeToUnderscoreConverter}}" />

(Это часть пользовательского элемента управления, который я создаю под названием «ThisDateTime».) Что я делаю неправильно и как это исправить?


person Rod    schedule 14.06.2010    source источник
comment
В проекте WPFToolkit на wpf.codeplex.com нет класса MaskedTextbox. Какой инструментарий WPF вы используете? Пожалуйста, отредактируйте вопрос, чтобы уточнить это.   -  person Ray Burns    schedule 16.06.2010
comment
Прошу прощения, вы правы. Я использую элемент управления MaskedTextbox, указанный Мэттом Макдональдом в его книге Pro WPF in C# 2008, написанной Apress.   -  person Rod    schedule 18.06.2010


Ответы (1)


Я не видел источник текстового поля, но сам столкнулся с чем-то подобным.

  • Может ли быть проблема в том, что ваш частично введенный текст либо не соответствует маске, либо не соответствует конвертеру?
  • Является ли UpdateSourceTrigger в Binding каким-то образом установленным в UpdateProperty, или что-то подобное происходит в коде программной части?
person Lunivore    schedule 28.06.2010
comment
Я спросил об этом технического специалиста Microsoft, и вы правы, это как-то связано с частично введенным текстом, не соответствующим маске. Но что такое UpdateSourceTrigger, который вы описываете с помощью UpdateProperty? (Я все еще слишком новичок в WPF, чтобы знать все его тонкости.) - person Rod; 06.07.2010
comment
UpdateSourceTrigger — это значение, которое вы можете установить, чтобы указать текстовому полю, когда обновлять источник, к которому оно привязано. Обычно он обновляет источник только тогда, когда фокус перемещается на другой элемент в той же группе (действительно раздражает, если вы нажимаете на другую вкладку, потому что теряете свой текст!) Установка его в UpdateProperty означает, что он будет обновлять источник всякий раз, когда текст изменяется в текстовое окно. - person Lunivore; 07.07.2010