Проблема с отображением Silverlight - PullRequest
0 голосов
/ 01 октября 2008

Я создал хороший элемент управления 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, как уже упоминалось. Не знаю, поможет ли это ...

Ответы [ 4 ]

3 голосов
/ 22 октября 2008

Сам нашел причину ...

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

Попробуй это. Добавьте высоту и ширину к стол, содержащий Silverlight контроль. Вы также можете добавить один символ пробела внутри TD, содержащий контроль.

В основном, когда таблица была обработана он не мог "увидеть" размер содержимое, чтобы оно не отображалось при все или только отображаются в размере одиночный пробел.

- Джон Стоктон

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

UPDATE:

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

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

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

0 голосов
/ 12 апреля 2009

LOL

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

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

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

0 голосов
/ 02 октября 2008

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

0 голосов
/ 01 октября 2008

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

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