Gần đây tôi đã bắt đầu làm việc với Silverlight và ngay lập tức nhận thấy sự khác biệt giữa Silverlight BCL và đầy đủ .Net và WPF. Đối với một số người trong số họ, tôi đã tìm thấy các giải pháp tuyệt vời được đăng trực tuyến bởi các nhà phát triển khác và những người khác phức tạp hơn. Các tính năng/lớp học nào khiến bạn ngạc nhiên/thất vọng khi thấy vắng mặt trong các thư viện lớp Silverlight, và bạn đã làm gì để giải quyết chúng?Tính năng .Net/WPF nào bạn bỏ lỡ khi làm việc trong Silverlight?
Một số của tôi là:
- Không có sự kiện kích hoạt hình ảnh động - Tôi tạo ra một lớp helper với các phương pháp tĩnh để gắn từng loại hoạt hình tôi đã sử dụng để cốt truyện trong một thư viện chia sẻ, đồng cấp ứng dụng tôi tạo các lớp với các phương thức tĩnh để đặt tất cả chúng lại với nhau như tôi sẽ có trong XAML nếu làm việc trong WPF. Cho đến nay, đây là một giải pháp tốt để giữ cho hoạt ảnh của tôi được tổ chức và logic ra khỏi trình xử lý sự kiện của tôi.
- ScrollViewer không hỗ trợ bánh xe chuột - Adam Cooper đã tạo một thư viện lớp tuyệt vời bổ sung chức năng này yêu cầu mã tối thiểu để triển khai trong bất kỳ dự án Silverlight nào. Trang web của anh ấy dường như đang ở thời điểm hiện tại, do đó, đây là liên kết tới blog của Tim Heuer giải thích và liên kết tới blog đó (vì vậy nó sẽ khả dụng khi trang web của anh ấy trực tuyến trở lại). Add mouse wheel support to ScrollViewer in Silverlight
SortedDictionary<T, K>
bị thiếu. Tôi tìm thấy this post có chứa triển khai, nhưng tôi không tự mình sử dụng nó.- ResourceDictionary.MergedDictionaries không có sẵn - Một lần nữa ... tìm thấy ai đó đã triển khai mã này và đăng mã nguồn, nhưng có vẻ hơi phức tạp. Tôi có lẽ sẽ làm việc thông qua nó một chút, nhưng vẫn chưa làm như vậy. MergedDictionaries in Silverlight
- Thuộc tính được đính kèm ZIndex chỉ khả dụng trên đối tượng Canvas. Tôi đã đăng câu hỏi này ở đây trên SO và một người nào đó đã đưa ra đề xuất tuyệt vời để gói các vật chứa của tôi trong bộ sưu tập nếu đó là những gì cần. Nó cảm thấy một chút cẩu thả, nhưng bạn phải làm những gì bạn phải làm. Các vùng chứa của tôi được lồng sâu ba cấp độ, vì vậy tôi có thể cần phải làm cong tất cả chúng trong các đối tượng Canvas và đặt Canvas.ZIndex ba lần cho mỗi sự kiện. Xấu xí như tội lỗi, nhưng nếu đó là cách duy nhất, thì cũng vậy.
Tôi quan tâm để xem những vấn đề phổ biến nào khác mà các nhà phát triển Silverlight có kinh nghiệm đã gặp phải và những gì bạn đã làm để khắc phục chúng.
Bạn có thể loại bỏ (4) bây giờ, khi nó được thêm vào –
Bạn cũng có thể loại bỏ 2, như Silverlight 4 có nguồn gốc hỗ trợ mousewheel cho: TextBox, ComboBox, Lịch, DatePicker và ScrollViewer (vì vậy DataGrid và ListBox là tốt). Và bạn hoàn toàn chắc chắn về 5) ZIndex? Bạn chắc chắn có thể sử dụng nó trong một khung lưới đánh máy Canvas.ZIndex = 123. – texmex5
Có lẽ chúng ta nên thêm vào mỗi câu trả lời cho phiên bản Silverlight đang được giới thiệu. Chủ đề này rất có giá trị nhưng sẽ mất giá trị nhanh chóng theo thời gian nếu người đọc không thể xem các phiên bản đang được thảo luận. –