Проблема с отображением Silverlight

Я создал красивый элемент управления silverlight, делающий именно то, что я хочу, и он выглядит великолепно :) Когда я размещаю его в тестовом проекте файла образца ASPX или файла образца HTML, он хорошо отображается.

Теперь мне нужно использовать элемент управления в моем существующем проекте ASP.NET 2.0, который имеет необычный дизайн. Проблема, с которой я столкнулся, заключается в том, что элемент управления не отображается точно так, как должен:

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

Очевидно, причина этого в моем дизайне HTML / CSS, но поиск проблемы займет очень много времени - так есть ли у кого-нибудь знания в этой области? Каковы правила обеспечения правильного отображения элемента управления? Какие свойства CSS следует использовать?

PS: Поскольку у меня есть приложение 2.0, я использую подход объектных тегов к Silverlight, и он содержится в DIV с высотой и шириной, установленными в стиле.

Запрошен фрагмент кода. Это примерно так (в основном копия тестовой страницы HTML из тестового проекта silverlight (которая отлично работает)):

<div id = "silverlightControlHost" style = "height: 300px; width: 750px;">
    <object data = "data:application/x-silverlight," type = "application/x-silverlight-2-b2"
    width = "100%" height = "100%">
    <param name = "source" value = "Contiki.SilverLight.FileUploader.xap" />
    <param name = "onerror" value = "onSilverlightError" />
    <param name = "background" value = "white" />                            
    <a href = "http://go.microsoft.com/fwlink/?LinkID=115261" style = "text-decoration: none;">
        <img src = "http://go.microsoft.com/fwlink/?LinkId=108181" alt = "Get Microsoft Silverlight"
        style = "border-style: none" />
    </a>
    </object>
    <iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>

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

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
1 829
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Иногда бывает трудно отладить проблемы с CSS. Одинаково ли поведение в разных браузерах? Ваш CSS где-нибудь использует "float"? Правильно ли работает приложение на той же странице за пределами таблицы, а затем за пределами div?

Как говорит Адам, проблемы с CSS - это настоящая PITA. Обычно, когда я сталкиваюсь с чем-то вроде этого, я начинаю с указания на пустой CSS вместо «причудливого», а затем снова начинаю добавлять стили, пока не смогу воспроизвести проблему.

Ответ принят как подходящий

Причину нашел сам ...

Оказывается, в Silverlight проблема с отображением, когда элемент управления помещается в таблицу html. Нашел информацию об этом на форуме silverlight. Речь шла о бета-версии 2, но я обновился до релизной версии, и это все еще проблема.

Try this. Add a height and a width to the table containing the Silverlight control. You may also want to add a single character of white space inside the TD containing the control.

Basically when the table was rendered it couldn't 'see' the size of the contents so it either didn't render at all or only rendered to the size of a single white-space character.

-- John Stockton

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

Обновлено:

Фактическим исправлением, которое я в итоге реализовал, был небольшой JavaScript, который «обновляет» содержащий его <DIV>. Вот:

<script type = "text/javascript">
    function refreshSL()
    {
        var div = document.getElementById('silverlightControlHost');
        div.style.display = 'block';
    }
    refreshSL();
</script>

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

ржу не могу

У меня была точно такая же проблема, и она сводила меня с ума. Проблема была изолирована от Internet Explorer. Прекрасно работает во всех других браузерах (даже в Opera).

Ваше решение - это наверняка взлом. Поскольку на самом деле это обход ошибки в IE, вы можете официально избавиться от нее.

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

Другие вопросы по теме