2013-08-21 3 views
0

WPF 프로젝트에서 MahApps.Metro을 사용하고 있습니다. 그러나 nuget 패키지를 사용하는 대신 소스 코드를 다운로드하여 프로젝트로 내 솔루션에 추가합니다 (이유가있을 수 있음). 아시다시피, 모든 컨트롤에는 기본 테마가 있습니다. 자, 내 프로젝트에서 MetroWindow의 기본값을 변경하려고합니다. 나는 원래 프로젝트를 바꾸고 싶지 않다. 그래서 나는 새로운 ResourceDictionary을 만들었고 그 스타일링을하고 있습니다. MetroWindow 기본값을 변경하려고했지만 x:Key 속성이 없으면 불가능한 것으로 보입니다. 나는이 시도 의미 :WPF UserControl 기본 테마 무시

<Style TargetType="{x:Type metro:MetroWindow}"> 
    <!-- My styles and templates gone here... --> 
</Style> 

너무이 하나 : 그들 중

<Style x:Key="{x:Type metro:MetroWindow}" TargetType="{x:Type metro:MetroWindow}"> 
    <!-- My styles and templates gone here... --> 
</Style> 

그러나 아무도, 제어 및 여전히 MahApps.Metro에 의해 정의 된 기본 테마를 사용하는 컨트롤에 영향을하지 않습니다. 나는 무엇을 놓쳤는가? 어떤 생각? 심지어 가능할까요?

답변

0

나는 또한 똑같은 방법을 시도해 봤지만 그 방법으로 창 스타일을 바꿀 수는 없다는 것이 밝혀졌습니다. 당신이 할 수있는 유일한 방법은 rolling your own window입니다.

는 컨트롤에 관해서는, 당신은 예를 사용하여 스타일을 변경할 수 있습니다

<Style TargetType="Button" BasedOn="{StaticResource MetroButton}"> 
    <!-- your changes here --> 
</Style> 
0

는 자신의 테마를 만드는 것입니다 할 수있는 또 다른 방법.

  1. Mahapps에서 BaseLight.xaml 또는 BaseDark.xaml 파일의 내용을 복사하여 새 테마 파일에 붙여 넣으십시오.
  2. 재정의 응용 프로그램을 시작할 때 주제는

    protected override void OnStartup(StartupEventArgs e) 
    { 
        base.OnStartup(e); 
    
        // Add and apply style 
        ThemeManager.AddAccent("CustomAccent", new Uri("pack://application:,,,/Custom.Style;component/CustomAccent.xaml")); 
        ThemeManager.AddAppTheme("CustomTheme", new Uri("pack://application:,,,/Customo.Style;component/CustomTheme.xaml")); 
        ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CustomAccent"), ThemeManager.GetAppTheme("CustomTheme")); 
    } 
    
  3. 는, 예를 들어 모든 MetroWindow의 배경색을 변경 키의 값을 변경하려면 "WhiteColor"