Как предотвратить мерцание при привязке логического значения к видимости элемента управления

У меня есть логическое свойство в моей ViewModel с именем, скажем, IsNotSupported, которое используется для отображения некоторой предупреждающей информации, если датчик не поддерживается. Поэтому я использую BooleanToVisibilityConverter, который добавлен в ресурсы:


    

и привяжите его к панели стека, содержащей предупреждение:


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

Это мерцание чертовски раздражает... По умолчанию оно должно быть свернуто и становиться видимым только после того, как станет ясно, что предупреждение должно отображаться. Кроме того, это позволит избежать второго прохода компоновки после привязки и, следовательно, может оказать положительное влияние на производительность.


У меня была эта проблема снова и снова, и я ничего не нашел об этом в Интернете, пока не нашел этот ТАК вопрос, который тесно связан, но не найден, если искать Windows Phone вместо Silverlight. И проблема, и решение могут показаться простыми, но я действительно беспокоил меня довольно долгое время, поэтому я подумал, что было бы неплохо написать вопрос в стиле вопросов и ответов -, чтобы помочь другим, которые сталкиваются с той же проблемой.

5
задан Community 23 May 2017 в 11:56
поделиться