2010-08-25 27 views
5

Mam mały problem z projektem wpf, nad którym obecnie pracuję. Jestem nowy w WPF. W moim app.xaml używam motywu Microsoft Aero dla mojej aplikacji. Mam coś takiego w moim App.xamlPrzesłanianie motywów w WPF

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component/themes/Aero.NormalColor.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

co teraz chciałbym wiedzieć, w jaki sposób, aby zastąpić pewne właściwości stylu np W przypadku przycisków chcę nadpisać styl czcionki, zachowując resztę stylu aero.

Jeśli zdefiniuję styl przycisku w moich zasobach okna, np.

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 

i zdefiniować przycisk w oparciu o wyżej stylu

przycisk traci wszystkie właściwości stylu aero. Myślę, że problem jest zrobić z okazji I zdefiniować basedon właściwość dla stylu

BasedOn="{StaticResource {x:Type Button}}" 

Nie sądzę zasób jest statyczny, ponieważ pochodzi z DLL, powinno to prawdopodobnie coś takiego . Nie jestem tego pewien.

BasedOn="{DynamicResource {x:Type Button}}" 

ale przede rzuca wyjątek i co gdybym miał wiele ResourceDictionary w moim App.xaml np luna i klasyczny. Jak mogę określić, który z nich powinien być używany jako domyślny i samowystępujący przy zmianie i nadpisywaniu innego (np. Luna) specjalnie dla niektórych elementów sterujących w moim interfejsie użytkownika? Więc niektóre z moich przycisków będą oparte na stylu luna, a niektóre na stylu aero z kilkoma dalszymi modyfikacjami?

Każdy pomysł?

Pozdrawiam,

+0

możliwym duplikatu [przesłanianie nadpisane WPF Theme] (http://stackoverflow.com/questions/2377055/override-overriden-wpf-theme) –

+0

Czy któryś ze stylów mieć wyraźne klucze, które można powiązać z? – Killnine

Odpowiedz

0

dla konkretnego zapytania na

np W przypadku przycisków chcę nadpisać styl czcionki, zachowując resztę stylu aero.

bym spróbować dodać ten w Resource Dictionary:

<FontFamily x:Key="YourFont">Tahoma</FontFamily> 

Wtedy to wykorzystać w swoim stylu:

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
    <Setter Property="FontFamily" Value="{StaticResource YourFont}"/> 
</Style> 

Więc można zmienić fontFamily na podstawie jednego klawisza.

Polecam patrząc na ten http://wpfthemes.codeplex.com/SourceControl/latest#WPF.Themes.Demo/Window1.xaml