c# wpf 프로그램에서 테마 추가방법

2024. 6. 28. 15:09젬스it

반응형

WPF(Windows Presentation Foundation)에서 테마를 추가하는 방법은 다음과 같습니다:
프로젝트 생성:
새 WPF 프로젝트를 만듭니다. 프로젝트 이름은 “WpfTheme” 등으로 설정합니다.
MainWindow.xaml 작성:
MainWindow.xaml 파일을 열고 아래와 같이 버튼을 추가합니다:
<Window x:Class="WpfTheme.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="테마에 따른 배경색 변경" Width="150" Height="50"></Button>
    </Grid>
</Window>

App.xaml 설정:
App.xaml 파일을 열고 아래와 같이 리소스 딕셔너리를 추가합니다:
<Application x:Class="WpfTheme.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="{ThemeDictionary WpfTheme}" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Themes 폴더 생성:
프로젝트 폴더에 “Themes” 폴더를 만듭니다. 이 폴더는 WPF에서 기본적으로 테마를 관리하는 폴더로 인식됩니다.
테마 리소스 추가:
“Themes” 폴더에서 새 항목을 추가하고 리소스 이름을 Aero.NormalColor.xaml, Classic.xaml, Generic.xaml로 설정합니다.
각 리소스 파일에는 버튼 배경색을 다르게 설정하는 스타일을 추가합니다. 예를 들어:
<!-- Aero.NormalColor.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Green" />
    </Style>
</ResourceDictionary>

<!-- Classic.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Yellow" />
    </Style>
</ResourceDictionary>

<!-- Generic.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Blue" />
    </Style>
</ResourceDictionary>

테마 테스트:
프로젝트를 빌드하고 실행합니다.
현재 시스템 테마에 따라 버튼 배경색이 변경됩니다.
테마에 맞는 UI 구현을 위해 위 방법을 응용할 수 있습니다

반응형