Я создал красивый элемент управления 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. Одинаково ли поведение в разных браузерах? Ваш 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, вы можете официально избавиться от нее.
Технически мы не должны использовать таблицы для разметки, но в реальном мире это единственный способ заставить вещи работать постоянно в разных браузерах.