2010-04-22 4 views
1

У меня есть пользовательский элемент управления WPF, который должен проверять некоторые поля. Он связан с классом, реализующим IDataErrorInfo.WPF-проверка с ContentPresenter

Когда я устанавливаю пользовательский элемент управления в качестве содержимого моего ContentPresenter в другое, уже открытое окно, я вижу, что происходит проверка, и возвращаемые сообщения об ошибках, однако я не получаю никакого аттестатора проверки - например. по умолчанию красный контур.

Если я вхожу в поле и оставляю его (запуск повторной проверки), появляется аттестат проверки.

Кроме того, если я покажу пользовательский элемент управления в его собственном окне, он сразу же отобразит рекламодателя.

(я использую Caliburn IResults сделать это внизу, например Show.Dialog<VM>();, но я подозреваю, что это не связано)

Можно ли предлагать какие-либо предложения, почему валидации графических элементов сразу не появляющийся. (Я догадалась анимацию на моем ContentPresenter ContentChanged, однако, я убрал это и по-прежнему возникают проблемы.

спасибо, Chris

+0

Вы используете .NET 3.5 или 4? Я хочу сказать, что этот " ошибка "исправлена ​​в WPF 4, но я не могу сказать точно. Можете ли вы предоставить некоторый исходный код, и я попробую его в .NET 4? – Brent

+0

Brent - вы правы - я пробовал себя с 4, и все было хорошо , а 3,5 ди не работаем. Есть ли у вас какие-либо предложения об обходном пути с 3.5, или мне нужно обновить. Большое спасибо - потратили слишком много времени, пытаясь решить эту проблему. http://dl.dropbox.com/u/120257/ValidationSample.zip – Chris

+0

Я не знаю обходного пути, кроме проверки этого сообщения ... http://forums.lhotka.net/forums/p /8573/40940.aspx Я посмотрел ваш исходный код и увидел ту же проблему, что и у вас. Лично я должен был перейти на .NET 4, а не реализовывать обходной путь, но это только я. Удачи! – Brent

ответ

1

Это известная ошибка, которая существует в .NET 3.5. Вы можете быть в состоянии для реализации workaround, однако, если это осуществимо, я бы рекомендовал перейти на .NET 4, так как это позаботится о вашей проблеме с проверкой.