2011-07-07 45 views
6

thể trùng lặp:
How to set the default font for a wpf application?Thiết họ phông chữ toàn cầu

Xuất thân từ một nền phát triển web tôi thường bị lẫn lộn về cách gán phong cách để kiểm soát của tôi. Điều tôi muốn làm là đặt họ phông chữ toàn cầu cho ứng dụng toàn bộ ứng dụng.

Trong file App.xaml của tôi, tôi đã sau

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

Tôi đã thử thay đổi loại mục tiêu để Control nhưng điều đó không phải làm bất cứ điều gì. Tôi hy vọng rằng vì tất cả mọi thứ về mặt kỹ thuật sống trong một điều khiển Window rằng mọi thứ sẽ hoạt động như mong đợi.

Tắt kiểm soát TextBlock không kế thừa từ Control. Tôi cho rằng đó là phần lớn vấn đề vì 90% văn bản của tôi ở dạng TextBlock.

Trong CSS tôi sẽ làm một cái gì đó như thế này:

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

Trả lời

12

Những gì tôi đã làm trước đó là tạo ra một phong cách kiểm soát, sau đó lấy được phong cách kiểm soát khác từ nó. Vì lý do gì, WPF không muốn thiết lập FontFamily trực tiếp từ kiểu Control, nhưng nếu nó lấy nó từ một Button Style dựa trên Control, thì nó hoạt động. Nếu tôi có thời gian sau đó, tôi sẽ đào bới và tìm một bản thực hiện trước đó.

Edit:
Không thể nhớ nơi tôi có thể đã đặt một sẵn sàng thực hiện ví dụ, vì vậy tôi đã thực hiện một:

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

Ngoài ra, hãy nhớ, một phong cách cho TextBlock không có thể dựa trên kiểm soát. Textblock xuất phát từ phần tử Khung, không phải Kiểm soát. Nhãn, hộp kiểm, hộp văn bản, vv xuất phát từ điều khiển xuất phát từ phần tử khung.

Bạn có thể sẽ phải có một kiểu riêng biệt cho Textblock. Một điều bạn có thể làm là thiết lập một nguồn tài nguyên gia đình phông chữ và liên kết các kiểu cấp cao nhất của bạn với điều đó. Sau đó, nếu nó thay đổi, tất cả những gì bạn phải làm là thay đổi một ví dụ.

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

<Setter Property="FontFamily" Value="{DynamicResource DefaultFont}"/> 
Các vấn đề liên quan