mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-04 08:40:51 +08:00
106 lines
3.0 KiB
C#
106 lines
3.0 KiB
C#
#pragma warning disable SA1402 // File may only contain a single class
|
|
|
|
namespace FluentTest.ViewModels
|
|
{
|
|
using System.Windows;
|
|
using System.Windows.Data;
|
|
using System.Windows.Media;
|
|
using ControlzEx.Theming;
|
|
|
|
public class ColorViewModel : ViewModel
|
|
{
|
|
private Color standardColor;
|
|
private Color highlightColor;
|
|
|
|
public ColorViewModel()
|
|
{
|
|
this.StandardColor = Colors.Black;
|
|
this.HighlightColor = Colors.Yellow;
|
|
|
|
CollectionViewSource.GetDefaultView(ThemeManager.Current.Themes).GroupDescriptions.Add(new PropertyGroupDescription(nameof(Theme.BaseColorScheme)));
|
|
}
|
|
|
|
public Color StandardColor
|
|
{
|
|
get { return this.standardColor; }
|
|
|
|
set
|
|
{
|
|
if (value == this.standardColor)
|
|
{
|
|
return;
|
|
}
|
|
|
|
this.standardColor = value;
|
|
this.OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
public Color HighlightColor
|
|
{
|
|
get { return this.highlightColor; }
|
|
|
|
set
|
|
{
|
|
if (value == this.highlightColor)
|
|
{
|
|
return;
|
|
}
|
|
|
|
this.highlightColor = value;
|
|
this.OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
public Color[] ThemeColors { get; } = { Colors.Red, Colors.Green, Colors.Blue, Colors.White, Colors.Black, Colors.Purple };
|
|
|
|
#pragma warning disable INPC010 // The property sets a different field than it returns.
|
|
public Color ThemeColor
|
|
{
|
|
get => ((SolidColorBrush)Application.Current.Resources["Fluent.Ribbon.Brushes.AccentBaseColorBrush"])?.Color ?? Colors.Pink;
|
|
|
|
set
|
|
{
|
|
var solidColorBrush = new SolidColorBrush(value);
|
|
solidColorBrush.Freeze();
|
|
Application.Current.Resources["Fluent.Ribbon.Brushes.AccentBaseColorBrush"] = solidColorBrush;
|
|
this.OnPropertyChanged();
|
|
}
|
|
}
|
|
#pragma warning restore INPC010 // The property sets a different field than it returns.
|
|
|
|
public string CurrentBaseColor
|
|
{
|
|
get => this.CurrentTheme.BaseColorScheme;
|
|
|
|
set
|
|
{
|
|
if (value is null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
ThemeManager.Current.ChangeThemeBaseColor(Application.Current, value);
|
|
this.OnPropertyChanged();
|
|
this.OnPropertyChanged(nameof(this.CurrentTheme));
|
|
}
|
|
}
|
|
|
|
public Theme CurrentTheme
|
|
{
|
|
get => ThemeManager.Current.DetectTheme(Application.Current);
|
|
|
|
set
|
|
{
|
|
if (value is null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
ThemeManager.Current.ChangeTheme(Application.Current, value);
|
|
this.OnPropertyChanged();
|
|
this.OnPropertyChanged(nameof(this.CurrentBaseColor));
|
|
}
|
|
}
|
|
}
|
|
} |