2012-05-10 35 views

cevap

1

şey gibi:

ResourceDictionary resources = new ResourceDictionary(); 
resources.Source = new Uri("/MyModule;component/MyModule.xaml", 
    UriKind.RelativeOrAbsolute); 
Application.Current.Resources.MergedDictionaries.Add(resources); 

aradığınız şey bu olabilir. Prizma Modüllerimizde bu şekilde kod kullanıyoruz.

3

Bunun üzerinde çalışıyorum bir SketchFlow projesinden düz bir pasajı xaml kaynak sözlükleri birleştirme nasıl gösterir:

<Application.Resources> 
    <!-- Resources scoped at the Application level should be defined here. --> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Microsoft.Expression.Prototyping.SketchControls;component/ScrollViewerStyles.xaml"/> 
      <ResourceDictionary Source="/[ProjectABC];component/[fileXYZ].xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Bu da başka bir kaynak sözlüğüne iki ek kaynak sözlükleri birleştirme gösterir.

(sağ açılış ResourceDictionary etiketinden sonra) MergedDictionaries tanımlamak Dictionary2.xaml yılında

19

(eğer birbirlerini geçersiz kılar gibi birden fazla yerde tanımlanmış varsayılan stilleri varsa sipariş önemli hale unutmayın):

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Path/to/Dictionary1.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

bir açmaz var: Eğer sözlükleri birleştirme her zaman etkili birleştirilmiş sözlüğe bir kopyasını oluşturun. Ve bu yinelemeli - eğer her ikisi de Dictionary2.xaml dosyasını yükleyen Dict3.xaml ve Dict4.xaml'ınız varsa, Dictionary1.xaml'ın üç örneğini oluşturmuş olursunuz:

Çözüm, bir SharedResourceDictionary. Öğreticideki uygulama bir başlangıç ​​noktası olarak görülmeli ve kullanım senaryosuna bağlı olarak muhtemelen bir miktar düzeltmeye ihtiyaç duyacaktır. Bazı "getchads" ve "çözümler" için Google "wpf SharedResourceDictionary". XAMeLi

tarafından this question cevap itibaren

İlgili konular