Недавно я начал работать с Silverlight и сразу заметил разницу между Silverlight BCL и полным .Net и WPF. Для некоторых из них я нашел отличные решения, размещенные в Интернете другими разработчиками, а другие были более сложными. Какие функции/классы вы были удивлены/разочарованы, чтобы найти отсутствующие в библиотеках классов Silverlight и что вы сделали, чтобы обойти их?
Некоторые из моих были:
- Нет анимации с событием. Я создал вспомогательный класс со статическими методами для привязки каждого типа анимации, который я использовал для раскадровки в общей библиотеке, и на уровне приложения создаю классы со статическими методы, чтобы собрать их все вместе, как и в XAML, если вы работаете в WPF. До сих пор это было хорошим решением для сохранения моих анимаций и логики из обработчиков событий.
- ScrollViewer не поддерживает колесико мыши. Adam Cooper создал отличную библиотеку классов, которая добавляет эту функциональность, которая требует минимального кода для реализации в любом проекте Silverlight. На данный момент его сайт, похоже, не работает, поэтому здесь есть ссылка на блог Тима Хейера, который объясняет и связывает его (так что он будет доступен, когда его сайт снова будет в сети). Добавить поддержку колесика мыши для ScrollViewer в Silverlight
-
SortedDictionary<T, K>
отсутствует. Я нашел этот пост, который содержит реализацию, но я не закончил используя его сам. - ResourceDictionary.MergedDictionaries не доступен. Еще раз... нашел того, кто это сделал и разместил исходный код, но это было немного сложно. Я, вероятно, немного поработаю над этим, но еще не сделал этого. MergedDictionaries в Silverlight
- Вложенное свойство ZIndex доступно только на объекте Canvas. Я разместил это как вопрос здесь на SO, и кто-то сделал большое предложение по упаковке моих контейнеров в коллекцию, если это необходимо. Он чувствует себя немного небрежным, но вы должны делать то, что должны делать. Мои контейнеры вложены в три уровня глубины, поэтому мне может понадобиться деформировать их все в Canvas-объектах и установить Canvas.ZIndex три раза для каждого события. Уродливо, как грех, но если это единственный способ, то пусть будет так.
Мне интересно узнать, какие другие распространенные проблемы имеют более опытные разработчики Silverlight и что вы сделали, чтобы исправить их.