Comments 12
Лучше Visibility.Hidden и Visible вместо Opacity.
+1
Не факт что лучше. Visibility перерисует контрол заново, а Opacity этого делать не будет.
-1
99% будет видна картинка, и только 1% времени она будет загружаться. И эти 99% времени прогрессбар висит в layout с работающей анимацией. Так что определенно Visibility.
+3
По поводу выбора Visibility или Opacity:
Visibility.Collapsed — скрывает элемент, освобождает место, не обрабатывает ивенты (мышь, тач, клавиатура).
Opacity = 0 — делает элемент прозрачным, не освобождает место, обрабатывает ивенты (мышь, тач, клавиатура).
Что касается производительности (память)- Visibility.Collapsed предпочтительнее, а свойства, дающее Opacity = 0 мы не используем, значит Вы правы, и стоит заменить Opacity =0 на Visibility.Collapsed и Opacity = 100 на Visibility.Visible
Visibility.Collapsed — скрывает элемент, освобождает место, не обрабатывает ивенты (мышь, тач, клавиатура).
Opacity = 0 — делает элемент прозрачным, не освобождает место, обрабатывает ивенты (мышь, тач, клавиатура).
Что касается производительности (память)- Visibility.Collapsed предпочтительнее, а свойства, дающее Opacity = 0 мы не используем, значит Вы правы, и стоит заменить Opacity =0 на Visibility.Collapsed и Opacity = 100 на Visibility.Visible
+1
Для универсальности, лучше убрать Border из контрола. Кому нужно сможет добавить сам, а вам не надо будет прокидывать его свойства.
Ещё тонкий момент, с WinRT я плотно не работал, но тут скорее всего тоже. Если передать вашему контролу источник с уже загруженным изображением, то кольцо не исчезнет. И, возможно, такое можно воспроизвести, когда вы отображаете список с одними и теми же картинками.
Ещё тонкий момент, с WinRT я плотно не работал, но тут скорее всего тоже. Если передать вашему контролу источник с уже загруженным изображением, то кольцо не исчезнет. И, возможно, такое можно воспроизвести, когда вы отображаете список с одними и теми же картинками.
+2
По поводу бордера — нет смысла его убирать, достаточно правильно назначить начальные условия внутри самого контрола.
Про загруженное изображение — эта будет не проблема, если изначально кольцо будет скрыто. Решается добавлением одной записи прямо в xaml контрола.
Про загруженное изображение — эта будет не проблема, если изначально кольцо будет скрыто. Решается добавлением одной записи прямо в xaml контрола.
0
Если вы хотите, что бы ваше решение было универсально, то бордер все же лучше убрать. Даже в рамках одного проекта изображения могут использоваться в нескольких разных видах. Да и когда бордер не нужен, лучше, чтоб его не было в визуальном дереве. Любой лишний элемент влияет на скорость отрисовки кадра. Иногда некоторые мелочи влияют на производительность очень значительно. Впрочем это надо выстрадать с профилеровщиком.
Что касается изображения.
controll.Image.Source = val;
if(val.Width == 0 || double.IsNaN(val.Width))
{
controll.Ring.Opacity = 100; // controll.Ring.Visibility = Visibility.Visible;
}
Примерно так. Может нужно использовать проверку получше. иначе опять же не будешь же создавать разные контролы для разных мест
Что касается изображения.
controll.Image.Source = val;
if(val.Width == 0 || double.IsNaN(val.Width))
{
controll.Ring.Opacity = 100; // controll.Ring.Visibility = Visibility.Visible;
}
Примерно так. Может нужно использовать проверку получше. иначе опять же не будешь же создавать разные контролы для разных мест
+2
WinRT это хорошо, а что с Windows Phone? Вы же не используете какое-то специфическое API?
0
Sign up to leave a comment.
ImageControl с показом ProgressRing для Win 8/RT