2012-05-04 2 views
0

Я получаю там с этой проверкой WPF, IDataErrorInfo, материал INotifyPropertyChange, но новая проблема при обновлении. У меня есть окно с кучей элементов управления. У меня есть интерфейс с вкладками и для простоты есть 2 страницы ... 5 элементов управления на каждом.wpf проверка обновления между вкладками

Я начинаю «Добавить» запись, поэтому все поля пусты. Пример: 3 поля на первой странице, которые требуют проверки, правильно помечены как красная рамка, чтобы указать, что они требуются ... никаких проблем.

Теперь я нажимаю на страницу 2 и сразу возвращаюсь на страницу 1. Красные границы исчезли. Они не появятся снова, если я не буду явно перебирать их, чтобы повторно сфокусировать их, потерять фокус и заставить его сделать свою утраченную фокус/свойство измененной валидацией через IDataErrorInfo.

Во-первых, любое объяснение, почему WPF теряет то, что первая страница выглядит только потому, что он должен изменить страниц 1 visiblity показать страницу 2, а затем вернуться к странице 1.

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

Благодаря

ответ

0

Если я правильно помню, маркера проверки ошибок по умолчанию для управления только красные коробки наложенных поверх контроля, а не часть самого контроля, так что видимость этого наложения, если не сохраняется управление скрыто. Вы можете попробовать изменить шаблон управления, чтобы включить красную рамку/метку непосредственно как часть элемента управления, и эта проблема может быть устранена.

Чтобы заставить все ваши привязки обновляться (и, следовательно, их проверка), все, что вам нужно сделать, это снова вызвать RaisePropertyChanged для любого свойства, которое вы хотите повторно проверить. Это немного расточительно, но вы можете просто вызвать RaisePropertyChanged с пустой строкой в ​​качестве параметра, и она будет повышаться для всех свойств в viewmodel.

+0

Попробую на следующей неделе назад в офисе. – DRapp

2

Просто поместите управления вы проверяете внутри AdornerDecorator об этом, это будет работать нормально;)

<TabItem> 
    <AdornerDecorator> 
    <Grid> 
     <TextBox> 
     </TextBox> 
     ... 
    </Grid> 
    </AdornerDecorator> 
</TabItem> 
Смежные вопросы