Наконец-то работает ... Поговорите о заговорах против вас ... Вам нужно исправить все эти вещи в первую очередь!
(обратите внимание, что существует следующая проблема с анимированием только первых 2 кадров, но это для другого вопроса) :
Часть 6 (сонливость сейчас)
Наконец, относительные URL-адреса изображений, начинающиеся с "/", не поддерживаются ImageTools.Controls.ImageConverter
, поэтому вам нужно использовать относительный URL-адрес без начального "/".Я обнаружил, что после устранения любой другой проблемы я получаю неподдерживаемое исключение с путем.
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
InitializeComponent();
this.ImageSource = new Uri("layer1.gif", UriKind.Relative);
this.DataContext = this;
Часть 5
Вам необходимо установить привязку DataContext где-нибудь.
Вы не подключаете страницу DataContext XAML к коду позади объекта.Я не мог видеть, где ты это сделал.Очень простой / быстрый способ - установить this.DataContext = this;
в конструкторе страницы.
Part 4
Вы можете связывать только публичные свойства!
Ваше ImageSource
свойствов настоящее время защищен.Измените его на Public
public Uri ImageSource
{
get;
set;
}
Часть 3
Я также отмечаю, что ваше свойство ImageSource не является свойством типа INotifyPropertyChange.Поэтому установка его после InitializeComponent не будет работать.
Попробуйте сделать это наоборот (или измените его на использование свойства notify):
public AnimatedSplashScreen()
{
ImageSource =
new Uri(
"/200px-Sunflower_as_GIF.gif",
UriKind.Relative);
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
InitializeComponent();
}
Часть 2 (фактически не поддерживается ImageTools.Controls.ImageConverter)
Междоменный файл был, по-видимому, только одной проблемой.Основываясь на комментариях, вам также нужно хранить ваши изображения на вашем собственном веб-сайте и ссылаться на них в соответствующем формате URI.
Если вы помещаете свои файлы в папку с изображениями в ClientBin, вы используете этот формат:
"/images/imagename.jpg"
Это лучший вариант, так как изображения также используют кэширование браузера!
Для вашего примера это будет выглядеть так:
ImageSource =
new Uri(
"/images/200px-Sunflower_as_GIF.gif",
UriKind.Relative);
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
ипоместите файл примера в папку вашего клиентского бина в разделе images.
Если вы не используете начальный "/", Silverlight предполагает, что файлы являются ресурсами в текущем модуле, например,
"images/imagename.jpg"
Part1
На самом деле это проблема авторского права, чтобы люди не могли ссылаться на файлы с чужих сайтов без разрешения.
На сайте Wikimedia.org нет перекрестных ссылок.файлы доступа к домену, например:
... предположительно какони не хотят, чтобы другие использовали файлы, размещенные там, за пределами их собственного веб-сайта.
Это означает, что Silverlight не разрешит доступ к файлам на этих сайтах, поскольку он является хорошим гражданином Интернета .Попробуйте разместить файлы на своем собственном сайте (где находится ваше приложение Silverlight), тогда ему вообще не понадобится файл кросс-доменного доступа.
Примечание: если вам когда-либо понадобится файл кросс-доменана веб-сайте, для использования Silverlight, используйте файл crossdomainpolicy.xml, поскольку другой не так полезен (предназначен для более старого использования флэш-памяти)