WPF에서 MahApps와 MaterialDesign을 사용하면 Dark, Light 모드에서 표시가 잘되지 않습니다.

소개



이전 MahApps에서 컬러 설정 저장 및 사용 이라는 기사를 썼습니다만, 거기서 테마를 Dark 모드로 했을 경우, 문자가 흰 빼기가 되는 것입니다만, 컨트롤에 의해 흑문자의 남아 있거나, 흰색 배경에 백문자라고 하는 현상이 일어나 네.

문제



진짜는 이렇게(Dark)인데

그것이 이렇게된다 (가장 왼쪽 ListBox가 검은 문자)


Light의 경우 사실은 이렇게 될 것입니다.

그것이 이렇게 된다(괘선이 보이지 않는다(흰색?))


해결



이전 기사에서 SetThemeAndColor를 호출했지만 그 전에 ApplyBaseTheme을 호출하여 다음과 같이 설정하면 잘 작동했습니다.
using MaterialDesignThemes.Wpf;

private readonly PaletteHelper _paletteHelper = new PaletteHelper();

public void ApplyBaseTheme(bool isDark)
{
    ITheme theme = _paletteHelper.GetTheme();
    IBaseTheme baseTheme = isDark ? new MaterialDesignDarkTheme() : (IBaseTheme)new MaterialDesignLightTheme();
    theme.SetBaseTheme(baseTheme);
    _paletteHelper.SetTheme(theme);
}

MaterialDesign측의 테마 설정을 먼저 실시해, 그 후 통상의 테마 설정을 하면 잘 컬러를 설정할 수 있는 것 같습니다.
이런 느낌입니다
    private void ApplyBase(bool isDark)
    {
        // ApplyBaseThemeを行う
        _materialDesignColorService.ApplyBaseTheme(isDark);

        // SetThemeAndColorを行う
        OnSetTheme(isDark);

        // カラーを保存
        _materialDesignColorService.SaveMaterialDesignColors();
    }

    private void OnSetTheme(bool isDark)
    {
        AppTheme apptheme; //AppTheme:enum Dark, Light
        if (isDark)
        {
            apptheme = (AppTheme)Enum.Parse(typeof(AppTheme), "Dark");
        }
        else
        {
            apptheme = (AppTheme)Enum.Parse(typeof(AppTheme), "Light");
        }

        _themeSelectorService.SetThemeAndColor(apptheme, SelectedWindowColor.Value);
    }

좋은 웹페이지 즐겨찾기