Как вы узнаете, отображается ли ваш элемент управления WPF? - PullRequest
6 голосов
/ 24 декабря 2008

У меня есть 2 вкладки. На вкладке № 1 у меня есть элемент управления, который соответствует событию изменения размера окна и необходимо вызвать PointToScreen ().

Проблема в том, что вкладка № 2 активна, и я изменяю размер окна, элемент управления на вкладке № 1 реагирует и завершается ошибкой, потому что его визуал не отображается, и я получаю исключение «Этот визуал не связан с источником представления».

Знаете ли вы, как проверить это дело, прежде чем я позвоню в PointoScreen?

Спасибо Ariel

Ответы [ 3 ]

14 голосов
/ 24 декабря 2008

Вы можете проверить «IsVisible» - это соответствует не как ярлык для сравнения свойства видимости, но также сообщает вам, отображается ли объект на экране. Я не совсем уверен, как это влияет на виртуализацию UIElements, но я думаю, что он правильно знает эти сценарии.

0 голосов
/ 28 октября 2009

У меня была похожая проблема с получением этого исключения. Я подписался на SelectedChanged событие управления вкладками, которое не означает, что выбор изменился в WPF. Смотри http://dotbay.blogspot.com/2009/10/in-wpf-selectionchanged-does-not-mean.html Больше подробностей. Надеюсь, что это поможет вам. Алекс.

0 голосов
/ 24 декабря 2008

Я бы выполнил это в коде, добавляющем и удаляющем обработчик событий в зависимости от выбранной вкладки. Когда Tab1 выбран, выполните AddHandler в элементе управления для события изменения размера окна, а когда Tab1 не выбран (т.е. другая вкладка выходит вперед), выполните RemoveHandler для элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...