2011-04-12 23 views
16

Temalar yüklenmemesi:WPF - Kaynak Generic.xaml Generic.xaml dan

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="WPF Commons;component/Controls/Layout/Foo/FooItem.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

Kontroller Düzen \ Foo \ FooItem.xaml \:

<Style TargetType="{x:Type l:FooItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type l:FooItem}"> 
       <Border> 
        <ContentPresenter ContentSource="Header" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 


Tüm stili, usercontrol kaynaklarına kopyalıyorsa, iyi çalışıyor. Ama yapmazsam, usercontrol boş görünür. Expression Blend 4'de, Edit Template> öğesini sağ tıklatıp seçtim, ancak Edit a Copy... seçmeme izin vermeyeceğim, bu da bana bir şeyin ciddi şekilde yanlış olduğuna ve Generic.xaml'ın düzgün yüklenmediğine inanmamı sağlıyor. Generic.xaml olduğunu düşünüyorum çünkü MergedDictionary aramasını kaldırırsam ve xaml stilini doğrudan Generic.xaml dosyasına kopyalayıp yapıştırırsam hala işe yaramıyor.

+0

eksik eğer sen FooItem için kodunuzu gösterebilir (drop-down) çözümü explorer özel Özellikleri düğümünü sonra AssemblyInfo.cs açıp yukarıdaki şeyler eklemek genişletebilirsiniz? Genel olarak, UserControls beklendiği gibi çalışmadığı için yeniden tasarlanmamalıdır (yani Template özelliği). – CodeNaked

+0

FooItem.cs şimdilik boş, düzeni düzgün bir şekilde aldığımdan ve yavaşça diğer DependencyProperties ve mantığına eklediğimden emin olmak istedim. – michael

+0

FooItem ne tür? – CodeNaked

cevap

30

Ben aşağıdaki satırı sizin AssemblyInfo.cs dosyasını değişmiş ve değişen (veya kaldırılmış) bu ya bir tahminde alacağım: Eğer THEMEINFO ilgili montaj anlatmaya gerek

[assembly: ThemeInfo(
    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 
    //(used if a resource is not found in the page, 
    // or application resource dictionaries) 
    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 
    //(used if a resource is not found in the page, 
    // app, or any theme specific resource dictionaries) 
)] 

. :) benim blogdan

+3

Aynı soruna girdim ve yukarıdaki özniteliği kullanarak düzeltildi. Benim durumumda, başlangıçta bir WPF Özel Kontrol Kütüphanesi olarak kurulmamış olan aC# kütüphane projesinin alınmasından kaynaklanıyordu (bu nedenle yukarıdaki öznitelik otomatik olarak derleme eklenmemişti) ve daha sonra bir Özel Kontrol ekledikten sonra – cordialgerm

1

kopyalama: İhtiyacınız Özellikleri \ AssemblyInfo.cs başında http://zoomicon.wordpress.com/2012/06/10/what-to-do-if-generic-xaml-doesnt-get-loaded-for-wpf-control/

(bu not Silverlight gerekli/kullanılmamaktadır): kullanarak System.Windows;

...

Zihin Proje Solution Explorer'da bir Özellikler düğümünü gelmezse, yeni bir (WPF özel denetim için) doğru şablonu kullanarak projeyi, veya sağ yapmak ya sahip olduğunu projeyi tıklatın, Özellikler'i seçin, sonra Montaj Bilgisi düğmesine basın ve bazı kukla değerler girin, ardından Özellikler düğümünü oluşturmak için Tamam (bu ayrıca bir Özellikler alt klasörü ve AssemblyInfo.cs dosyasına da oluşturulur).

+0

Denetimin stili için kullanılan kaynağın XAML tanımında bir anahtarınız varsa, yüklenmez, yalnızca bir Target özniteliği kullanmanız gerekir - bu muhtemelen dahili olarak bazı gizli anahtarlar oluşturur –