2010-11-13 17 views
5

Bu sorunun veya türevinin bazilyon süreleri sorulduğundan eminim, ancak sorunu çözmemde yardımcı olan hiçbir şey bulamadım, bu yüzden soruyorum. Lütfen emin olduğum kopyaları bana yönlendirmekten çekinmeyin, ancak bulamıyorum. Anlaşılan anahtar kelimelerle o kadar da iyi değilim.WPF Özel Kontrol Şablonu Uygulanmadı

Özel Kontrolüm var, yalnızca kontrol şablonunu tanımlamak için kullanılan kendi Kaynak Sözlüğüne sahiptir. Bu sözlük daha sonra Generic.xaml içine birleştirilir. Sorun şu ki, bu kontrol UI'de gösterildiğinde, içinde hiçbir şey yoktur. Bunu bulmak için Snoop kullanmıştım. Kontrol kullanıcı arayüzünde, ancak tamamen boş.

Aşağıda, sorunun sorumlu olduğunu düşündüğüm öğeleri bulacaksınız. Sunduğunuz herhangi bir yardım veya tavsiye büyük beğeni topluyor.

benim klasör yapısı ilgili kısımları şu şekildedir:

My Directory Structure

BasicTemplate.xaml:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:WPFSpecBuilder.Layouts.Templates"> 

    <Style TargetType="{x:Type local:BasicTemplate}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type local:BasicTemplate}"> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}"> 
         <Grid> 
          <TextBlock Text="This is a basic template." /> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ResourceDictionary> 

Generic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Layouts/Templates/XAML/BasicTemplate.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 
+0

Ben dışlama ilkesine göre öne çıkaracağı: Önce stil tanımı bir parçası DEĞİLDİR olduğunu iddia sorun. Yani, iç içe ResourceDictionary'ınızdan çıkarın ve Generic.xaml (App.xaml dosyasında referans vermenizi umarım) 'a yapıştırın. Bundan sonra istenen etki gösterilir, Steve'in önerdiği şeyi deneyin (göreli yolunuzun doğru olarak ayarlandığını doğrulayın) –

cevap

1

bu deneyin: Sayfa BasicTemplate.xaml için

  1. Seti Eylem oluştur.

  2. Generic.xaml içinde BasicTemplate.xaml başvurusunu ekleyin:

    ResourceDictionary Kaynak =; O eserler gereken "/ WPDSpecBuilder bileşeni/Düzenleri/Şablonlar/Xaml/BasicTemplate.xaml"

.

1

Bu, birleştirilmiş sözlüğün göreli yolunu değiştirmek kadar basit olabilir. Klasör yolunun başlangıcına bir / eklemeyi deneyin:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Layouts/Templates/XAML/BasicTemplate.xaml" /> 
</ResourceDictionary.MergedDictionaries> 
1

Dene:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="pack://application:,,,/WPDSpecBuilder;component/Layouts/Templates/XAML/BasicTemplate.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

See here for more details on Pack Uri's