2011-07-07 20 views
6

Powiel możliwe:
How to set the default font for a wpf application?ustawienie globalne rodziny czcionek

Jadąc od tła tworzenia stron WWW często mieszają się, w jaki sposób przypisać style moim kontroli. Chciałbym ustawić globalną rodzinę czcionek dla aplikacji dla całego.

W moim pliku App.xaml Mam następujący

<Style TargetType="{x:Type Window}"> 
     <Setter Property="FontFamily" Value="Helvetica, Arial" /> 
     <Setter Property="FontSize" Value="13" /> 
    </Style> 

próbowałam zmieniając typ docelowy Control ale że nie robi nic. Spodziewam się, że ponieważ wszystko technicznie żyje w kontroli Window, wszystko będzie działało zgodnie z oczekiwaniami.

Okazuje się, że kontrola TextBlock nie dziedziczy po Control. Zakładam, że to największy problem, ponieważ 90% mojego tekstu jest w formularzu TextBlock.

W CSS chciałbym zrobić coś takiego:

body { 
    font-family: Helvetica, Arial; 
    font-size: 13px; 
    } 

Odpowiedz

12

Co już wcześniej zrobić, to stworzyć styl sterowania, a następnie czerpać inne style sterujących z nim. Z jakiegoś powodu, WPF nie chce przyjąć ustawienia FontFamily bezpośrednio ze stylu Kontroli, ale jeśli zrobi to z Stylu przycisku opartego na Kontroli, to działa. Jeśli dostanę trochę czasu później, przekopię się i znajdę poprzednią implementację tego.

Edit:
nie mógł sobie przypomnieć, gdzie mógłbym umieścić gotowych przykład, więc zrobiłem jedną:

<Style x:Key="ControlStyle" TargetType="Control"> 
    <Setter Property="FontFamily" Value="Wingdings"/> 
</Style> 
<Style TargetType="Button" BasedOn="{StaticResource ControlStyle}"/> 

Ponadto, należy pamiętać, to styl dla TextBlock nie może być oparte na kontroli. Textblock pochodzi z elementu Framework, a nie z Control. Etykieta, pole wyboru, pole tekstowe itp. Pochodzą z Kontroli, która pochodzi z Elementu Ramowego.

Najprawdopodobniej będziesz musiał mieć oddzielny styl dla Textblock. Jedną z rzeczy, którą możesz zrobić, jest ustawienie zasobu rodziny czcionek i powiązanie z nim stylów najwyższego poziomu. Jeśli to się zmieni, wszystko co musisz zrobić, to zmienić to jedno wystąpienie.

<FontFamily x:Key="DefaultFont" >Ravie</FontFamily> 

<Setter Property="FontFamily" Value="{DynamicResource DefaultFont}"/> 
Powiązane problemy