2009-12-18 27 views
6

Tôi có một thư viện lớp Silverlight (không phải là một ứng dụng cấp cao nhất) với một số điều khiển người dùng được chia sẻ bởi các ứng dụng Silverlight khác nhau. Tôi đã đi qua và kéo ra một số phong cách và bàn chải cho các điều khiển và đặt chúng trong một tập tin XAML riêng biệt như một từ điển tài nguyên mà tôi mang vào mỗi điều khiển như một từ điển tài nguyên hợp nhất. Hiện tại, công việc này rất tuyệt vời trong các ứng dụng cấp cao nhất của tôi, miễn là tôi giữ từ điển tài nguyên đó dưới dạng hành động xây dựng "Tài nguyên" và tham chiếu nó theo cách đó từ các điều khiển. Điều tôi thực sự muốn làm là có tệp XAML từ điển tài nguyên này dưới dạng hành động xây dựng "Nội dung" được sao chép vào XAP cấp cao nhất, để XAML có thể được hoán đổi trong tệp XAP mà không cần phải xây dựng lại dự án. Bất cứ khi nào tôi cố gắng thiết lập, tệp XAML sẽ được sao chép vào thùng đầu ra cho dự án thư viện lớp, nhưng nó sẽ không bao giờ được sao chép vào thư mục đầu ra của dự án ứng dụng Silverlight cấp cao nhất của tôi hoặc vào tệp XAP cuối cùng.Bao bì ResourceDictionary cho Silverlight Class Library

Cách tốt nhất để thực hiện việc này là gì? Từ điển tài nguyên XAML về bản chất là một sự phụ thuộc của thư viện lớp và thư viện lớp (của các điều khiển người dùng) là một sự phụ thuộc của ứng dụng Silverlight cấp cao nhất.

Trả lời

1

Thêm ControlResources.xaml (các ResourceDictionary bạn muốn trong XAP của bạn) để cấp cao nhất XAP dự án dưới dạng liên kết thông qua Dự án-> Thêm mục hiện tại-> Thêm làm liên kết (một mục thả xuống trên nút Thêm trong hộp thoại) và đặt nó để xây dựng dưới dạng Nội dung.

+0

Điều này có vẻ như là cách tiếp cận tốt nhất có thể, chỉ là loại gây phiền nhiễu để có cả một tham chiếu đến một thư viện lớp Silverlight và một liên kết đến một trong các tập tin đầu ra của nó trong ứng dụng Silverlight. Đoán rằng đó là cách duy nhất của nó nhận được trong XAP mà không có một số xây dựng lại XAP đóng gói hackery. –

+0

Sau khi thử nghiệm một số thứ khác, phương pháp này hoạt động tốt trong thời gian chạy nhưng không xuất hiện là "Có thể kết hợp". Khi mở ứng dụng Silverlight cấp cao nhất trong Expression Blend, tôi nhận được toàn bộ các lỗi ... có vẻ như Blend không thể theo các liên kết trong dự án tới ResourceDictionary cho thư viện lớp điều khiển. Bất kỳ ý tưởng về làm thế nào để có được Blend để chơi tốt? Giải pháp này sẽ không cắt nó nếu tôi không bao giờ có thể mở dự án đúng cách trong Blend. –

0
+0

Từ điển tài nguyên được hợp nhất là những gì tôi đang sử dụng để lưu các kiểu và bàn chải trong một tệp XAML riêng biệt, vấn đề là từ điển là một phần của Thư viện lớp Silverlight được chia sẻ của tôi chứ không phải ứng dụng Silverlight. Khi tôi đặt hành động xây dựng thành Nội dung và Sao chép Luôn luôn không bao giờ được sao chép vào tệp XAP ứng dụng của tôi. Chỉ cần cố gắng tìm cách tốt nhất để đóng gói và tham chiếu một tài nguyên từ một thư viện lớp phụ thuộc trong XAP cuối cùng. –

+0

hãy xem dự án chéo đã hợp nhất các tệp tài nguyên tại http://thoughtjelly.blogspot.com/2009/10/cross-project-mergeddictionaries-in.html –

+1

OP xác định mục đích là để có thể trao đổi tài nguyên được chia sẻ XAML tệp ra khỏi tệp XAP mà không cần xây dựng lại. Chiến lược chia sẻ tài nguyên được chia sẻ được tham chiếu trong bài đăng của Mark dường như không thực hiện được điều này. Để trao đổi XAML này mà không cần xây dựng lại sẽ yêu cầu nó là một tệp nội dung trong XAP (không được biên dịch thành một assembly). Cách duy nhất tôi biết để thực hiện điều đó là với một mục "Nội dung" xây dựng trong dự án Ứng dụng Silverlight đang được xây dựng - do đó mục tệp dự án được nối kết là cách để đi đến đây. –

Các vấn đề liên quan