2012-06-11 14 views
6

Mam następujący styl dodany do moich Windows.Resourcesobciążenia styl kontrola z osobnym pliku w WPF

<Window.Resources> 
... 
<!--A Style that extends the previous TextBlock Style--> 
<!--This is a "named style" with an x:Key of TitleText--> 
<Style BasedOn="{StaticResource {x:Type TextBlock}}" 
    TargetType="TextBlock" 
    x:Key="TitleText"> 
<Setter Property="FontSize" Value="26"/> 
<Setter Property="Foreground"> 
<Setter.Value> 
    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
    <LinearGradientBrush.GradientStops> 
     <GradientStop Offset="0.0" Color="#90DDDD" /> 
     <GradientStop Offset="1.0" Color="#5BFFFF" /> 
    </LinearGradientBrush.GradientStops> 
    </LinearGradientBrush> 
    </Setter.Value> 
</Setter> 
</Style> 
... 
</Window.Resources> 

mam wiele z tych stylów w moim kodu xaml i chciałbym, aby zapisać każdy składnik do stylu dodatkowy plik (nie plik zewnętrzny) .. na przykład wszystkie style związane z TextBlocks powinny być w pliku o nazwie TextBlockStyles.xaml

Jak to zrobić w wpf?

Jak połączyć styl w moim projekcie?

Dzięki z góry

Odpowiedz

17

można korzystać ze słowników zasobów scalone

W ty App.xaml byłoby użyć

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary 
       Source="/Your.Assembly.Name;component/TextBlockStyles.xaml"/> 
      ... other dictionaries here 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

lub bezpośrednio do UserControl byłoby

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary 
       Source="/Your.Assembly.Name;component/TextBlockStyles.xaml"/> 
      ... other dictionaries here 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

Ty można skrócić Source="..." tylko do Source="TextBlockStyles.xaml", jeśli plik znajduje się w tym samym zespole i w katalogu głównym projektu, lub alternatywnie Source="Styles\TextBlockStyles.xaml", jeśli umieścisz słownik zasobów w folderze Styles.

+0

Jak wygląda plik o nazwie 'TextBlockStyles.xaml'? –

+0

@TheMuffinMan: Przykład [można znaleźć tutaj] (https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references#merged-resource -słowniki). (W tym przykładzie jest to 'Dictionary1.xaml'). – kmote

0

szukasz zasobów dynamicznych. najlepiej jest załadować i zminimalizować słownik w zasobach. aplikacji lub na stronie kontrolnej. jest to dobra próbka.

http://blogs.msdn.com/b/wpfsdk/archive/2007/06/08/defining-and-using-shared-resources-in-a-custom-control-library.aspx

<ResourceDictionary> 

    <ResourceDictionary.MergedDictionaries> 

    <ResourceDictionary Source="Dictionary1.xaml"/> 

    </ResourceDictionary.MergedDictionaries> 

</ResourceDictionary> 

this.Resources.MergedDictionaries.Add (Smyresourcedictionary);

Powiązane problemy