2009-12-18 15 views
6

Farklı silverlight uygulamaları tarafından paylaşılan çeşitli kullanıcı denetimleriyle bir gümüş sınıf sınıf kitaplığına (üst düzey bir uygulama değil) sahibim. Kontroller için çeşitli stilleri ve fırçaları inceledim ve ayrı bir XAML dosyasına, her bir kontrolün birleşik bir kaynak sözlük olarak getirdiği bir kaynak sözlük olarak yerleştirdim. Şu anda bu kaynak sözlüğünü bir "Kaynak" oluşturma eylemi olarak tuttuğum ve bu şekilde denetimlerden bu şekilde kullanmaya devam ettiğim sürece, bu benim en üst düzey uygulamalarda harika çalışıyor.Silverlight Sınıf Kitaplığı için ResourceDictionary Paketleme

Gerçekten yapmak istediğim, bu kaynak sözlüğüne XAML dosyasının, üst düzey XAP'a kopyalanan bir "İçerik" oluşturma eylemi olması, böylece XAML'in gerekmeden XAP dosyasında değiştirilebilmesi projeyi yeniden inşa et. Bunu her kurduğumda, XAML dosyası sınıf kütüphanesi projesi için çıkış kutusuna kopyalanacaktır, ancak en üst düzey silverlight proje proje çıktı dizinine veya son XAP dosyasına asla kopyalanmayacaktır.

Bunu gerçekleştirmenin en iyi yolu nedir? XAML kaynak sözlüğü temelde sınıf kütüphanesinin bağımlılığıdır ve sınıf kütüphanesi (kullanıcı kontrollerinin) üst düzey silverlight uygulamasının bir bağımlılığıdır.

cevap

1

üst düzey XAP için ControlResources.xaml (eğer XAP istediğiniz ResourceDictionary) ekleyin proje bir bağlantı olarak - Proje -> Mevcut Öğe Ekle -> Bağlantı Ekle (iletişim kutusundaki Ekle düğmesindeki bir aşağı açılan öğe) ve bunu İçerik olarak da oluşturmaya ayarlayın.

+0

Bu, mümkün olan en iyi yaklaşım gibi gözüküyor, hem bir silverlight sınıf kitaplığına hem de Silverlight uygulamasındaki çıktı dosyalarından birine bir bağlantıya sahip olmanın can sıkıcı bir örneği. Sanırım XAP'a post-build XAP yeniden ambalajlama korsanlığı yapmadan ulaşmanın tek yolu bu. –

+0

Bazı şeyleri test ettikten sonra, bu yaklaşım çalışma zamanında gayet iyi çalışıyor, ancak "Bükülebilir" gibi görünmüyor. Expression Blend uygulamasında en üst düzey silverlight uygulamasını açarken, bir sürü hata alıyorum ... Blend, projedeki linkleri kontrol sınıf kütüphanesi için ResourceDictionary'a uygulayamıyor gibi görünüyor. Blend'i iyi oynamak için nasıl bir fikir var? Blend'de projeyi düzgün bir şekilde açamazsam bu çözüm kesilmez. –

0
+0

Birleştirilmiş Kaynak Sözlükleri kullandığım şeylerdir, bu yüzden stiller ve fırçaları ayrı bir XAML dosyasında saklayın, sorun, sözlüğün bir Silverlight Uygulaması değil, paylaşılan Silverlight Sınıf Kitaplığımın bir parçası olmasıdır. Oluşturma eylemini İçeriğe ve Kopyalamaya her zaman ayarladığımda, herzaman asla benim uygulamalar XAP dosyasına kopyalanmıyor. Sadece son XAP'deki bir bağımlı sınıf kütüphanesinden bir kaynağı paketleyip referanslamak için en iyi yolu bulmaya çalışıyorum. –

+0

http://thoughtjelly.blogspot.com/2009/10/cross-project-mergeddictionaries-in.html –

+1

adresindeki çapraz proje birleştirilmiş kaynak dosyalarına bakın. OP belirtilen amacı paylaşılan kaynağı takas edebilmekti XAML, yeniden oluşturmadan XAP dosyasından çıktı. Mark'ın gönderisinde referans verilen paylaşılan kaynak derleme stratejisi, bunu gerçekleştirecek gibi görünmüyor. Yeniden tasarlanmadan bu XAML'yi değiştirmek için XAP'de bir içerik dosyası olmasını gerektirir (bir derleme olarak derlenmez). Bunu gerçekleştirmek için bildiğim tek yol, oluşturulan Silverlight Uygulaması projesinde bir "İçerik" yapı öğesiyle ilgilidir - böylece bağlantılı proje dosyası öğesi buraya gitmenin yoludur. –

İlgili konular