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);
}
Author And Source
この問題について(WPFでMahAppsとMaterialDesignを使用しているとDark, Lightモードで表示がうまくいかなくなる), 我々は、より多くの情報をここで見つけました https://qiita.com/mkuwan/items/844094ff2a991a40b8a4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .