WPF 응용 프로그램의 기본 글꼴을 설정하려면 어떻게 해야 합니까?
WPF 애플리케이션의 폰트 패밀리를 정의할 수 있도록 하고 싶다.에서 참조되는 테마로서 자원 사전을 사용하는 것이 좋습니다.App.xaml
. 나는 그것을 만들어 보았다.Style
다음과 같습니다.
<Style TargetType="{x:Type Control}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
하지만 이건 안 돼유형 설정TextBlock
대부분의 컨트롤에서 작동하지만 이 기능이 적용되지 않는 컨트롤이 몇 개 있습니다.
창에 글꼴을 설정하고 해당 창의 모든 자식 컨트롤이 글꼴을 상속하도록 할 수 있습니다.그러나 대화창은 기본 글꼴로 돌아갈 것입니다. 이 글꼴은 제가 원하는 글꼴이 아닙니다.
좋은 생각 있어요?
고객님의Window
서브클래스는 덮어쓰지 않는다DefaultStyleKey
Window 스타일에 추가할 수 있습니다.TextElement.FontFamilyProperty
는 상속된 속성입니다.
<Style TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
또한 다음 항목을 앱 생성자에 추가해야 합니다.InitializeComponent
호출:
FrameworkElement.StyleProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata
{
DefaultValue = FindResource(typeof(Window))
});
작동 방식: App 객체의 초기화가 완료되면 지정된 Window 스타일이 모든 창의 기본 스타일이 됩니다.
제안된 해결책의 대부분은 나에게 효과가 없었다.심플한 솔루션:
App.xaml에 추가:
<Style TargetType="{x:Type Window}">
<Setter Property="FontSize"
Value="14" />
</Style>
Initialize Component 뒤에 Main Window 컨스트럭터에 추가합니다.
Style = (Style)FindResource(typeof(Window));
실제로 XAML의 풀 솔루션을 입수할 수 있습니다.다른 답변도 몇 가지 있습니다.
메인 창이 호출된 경우WinMain
(다른 모든 것보다 먼저 로드하는 것)이라는 이름의 스타일에 참조만 추가합니다. WinAll
<Window x:Class="MyNamespace.WinMain"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="WinMain" Height="450" Width="800"
Style="{StaticResource WinAll}">
그리고 자신의 스타일을 이렇게 정의한다.
<Style x:Key="WinAll" TargetType="{x:Type Window}">
<Setter Property="FontFamily"
Value="Comic Sans MS" />
<Setter Property="FontSize"
Value="14" />
</Style>
프로그래밍 방식으로 수행하는 간단한 방법 중 하나는 다음과 같습니다.
public MainWindow()
{
this.FontFamily = new FontFamily("Segoe UI");
}
이걸 찾았어요
TextElement.FontFamilyProperty.OverrideMetadata(
typeof(TextElement),
new FrameworkPropertyMetadata(
new FontFamily("Comic Sans MS")));
TextBlock.FontFamilyProperty.OverrideMetadata(
typeof(TextBlock),
new FrameworkPropertyMetadata(
new FontFamily("Comic Sans MS")));
이 간단한 회피책은App.xaml
(이후 코드는 불필요):
<SolidColorBrush x:Key="ForeBrush" Color="Blue" />
<Style x:Key="GenericTextStyle">
<!-- Generic control forecolor definition -->
<Setter Property="Control.Foreground" Value="{StaticResource ForeBrush}" />
<!-- Add a definition for each unworking nested control -->
<Style.Resources>
<Style TargetType="{x:Type Label}">
<Setter Property="Foreground" Value="{StaticResource ForeBrush}" />
</Style>
</Style.Resources>
</Style>
여기에 당신의 창문 스타일을 묶으세요.나한테는 딱 맞아.중첩된 트리에 일부 속성만 정의하면 됩니다.예를 들어 속성FontSize
를 지정할 수 있는 것은 범용 섹션뿐입니다.
왜 이런 수법을 쓸 필요가 있는지 모르겠어요.라벨은 Control에서 파생되어야 하는데 이상합니다.아는 사람 있어?
언급URL : https://stackoverflow.com/questions/3145511/how-to-set-the-default-font-for-a-wpf-application
'programing' 카테고리의 다른 글
Bash의 'eval' 명령어와 그 일반적인 용도 (0) | 2023.04.14 |
---|---|
Android 에뮬레이터(qemu-system-i386.exe)를 통한 높은 CPU 사용률 (0) | 2023.04.14 |
셸 스크립트의 16진수부터 10진수까지 (0) | 2023.04.14 |
WPF: 폭(및 높이)을 퍼센티지 값으로 설정 (0) | 2023.04.14 |
현재 아이폰/디바이스 모델을 판별하는 방법 (0) | 2023.04.14 |