トグルボタンでダークモードとライトモードを切り替え
4840 ワード
はじめに
ダークモードにできたら、もっといい感じになるよね!
非常に簡単なので、すぐやろう!
Windowにトグルボタンを配置する
トグルボタンのIsCheckプロパティとVieModelのDarkMode.Valueプロパティをバインドする。
MainWindow.xaml
<!-- ダークモード/ライトモードを切り替えるトグルボタン -->
<ToggleButton IsChecked="{Binding Path=DarkMode.Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
ボタンの入力変更を監視するプロパティを用意する
MainWindowViewModel.cs
using MaterialDesignThemes.Wpf;
using Reactive.Bindings;
using Reactive.Bindings.Extensions;
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel() : base()
{
// 初期化
this.DarkMode = new ReactiveProperty<bool>(false).AddTo(this.disposedValue);
// プロパティの値を監視する。
this.DarkMode
.ObserveProperty(x => x.Value)
.Subscribe(x =>
{
PaletteHelper paletteHelper = new PaletteHelper();
ITheme theme = paletteHelper.GetTheme();
theme.SetBaseTheme((bool)x ? Theme.Dark : Theme.Light);
paletteHelper.SetTheme(theme);
})
.AddTo(this.disposedValue);
}
public ReactiveProperty<bool> DarkMode { get; }
}
デバッグで確認
MainWindowViewModel.cs
using MaterialDesignThemes.Wpf;
using Reactive.Bindings;
using Reactive.Bindings.Extensions;
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel() : base()
{
// 初期化
this.DarkMode = new ReactiveProperty<bool>(false).AddTo(this.disposedValue);
// プロパティの値を監視する。
this.DarkMode
.ObserveProperty(x => x.Value)
.Subscribe(x =>
{
PaletteHelper paletteHelper = new PaletteHelper();
ITheme theme = paletteHelper.GetTheme();
theme.SetBaseTheme((bool)x ? Theme.Dark : Theme.Light);
paletteHelper.SetTheme(theme);
})
.AddTo(this.disposedValue);
}
public ReactiveProperty<bool> DarkMode { get; }
}
以上。
Author And Source
この問題について(トグルボタンでダークモードとライトモードを切り替え), 我々は、より多くの情報をここで見つけました https://qiita.com/ay-ustak_12/items/3b73a07d37e683ccfa38著者帰属:元の著者の情報は、元の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 .