mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
using System.ComponentModel;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Windows;
|
|
using Artemis.Core.Models.Profile;
|
|
using Artemis.UI.Shared.Annotations;
|
|
using MaterialDesignExtensions.Controls;
|
|
|
|
namespace Artemis.UI.Shared.Screens.GradientEditor
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for GradientEditor.xaml
|
|
/// </summary>
|
|
public partial class GradientEditor : MaterialWindow, INotifyPropertyChanged
|
|
{
|
|
public static readonly DependencyProperty ColorGradientProperty = DependencyProperty.Register(nameof(ColorGradient), typeof(ColorGradient), typeof(GradientEditor),
|
|
new FrameworkPropertyMetadata(default(ColorGradient), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, ColorGradientPropertyChangedCallback));
|
|
|
|
public static readonly RoutedEvent ColorGradientChangedEvent =
|
|
EventManager.RegisterRoutedEvent(
|
|
nameof(ColorGradient),
|
|
RoutingStrategy.Bubble,
|
|
typeof(RoutedPropertyChangedEventHandler<ColorGradient>),
|
|
typeof(GradientEditor));
|
|
|
|
private bool _inCallback;
|
|
|
|
public GradientEditor(ColorGradient colorGradient)
|
|
{
|
|
InitializeComponent();
|
|
DataContext = this;
|
|
ColorGradient = colorGradient;
|
|
}
|
|
|
|
public ColorGradient ColorGradient
|
|
{
|
|
get => (ColorGradient) GetValue(ColorGradientProperty);
|
|
set => SetValue(ColorGradientProperty, value);
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
[NotifyPropertyChangedInvocator]
|
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
private static void ColorGradientPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var editor = (GradientEditor) d;
|
|
if (editor._inCallback)
|
|
return;
|
|
|
|
editor._inCallback = true;
|
|
editor.OnPropertyChanged(nameof(ColorGradient));
|
|
editor._inCallback = false;
|
|
}
|
|
}
|
|
} |