using System.ComponentModel; using System.Runtime.CompilerServices; using System.Xml.Serialization; using Configuration.Properties; namespace Configuration { [XmlRoot(ElementName = "Settings")] public class Settings : INotifyPropertyChanged { #region Public Enums, Properties and Fields [XmlElement(ElementName = "LaunchOnBoot")] public bool LaunchOnBoot { get => _launchOnBoot; set { if (value == _launchOnBoot) { return; } _launchOnBoot = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Mouse")] public bool Mouse { get => _mouse; set { if (value == _mouse) { return; } _mouse = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Keyboard")] public bool Keyboard { get => _keyboard; set { if (value == _keyboard) { return; } _keyboard = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Binding")] public Binding Binding { get => _binding; set { if (value == _binding) { return; } _binding = value; OnPropertyChanged(); } } #endregion #region Private Delegates, Events, Enums, Properties, Indexers and Fields private Binding _binding = new Binding(); private bool _keyboard = true; private bool _launchOnBoot; private bool _mouse = true; #endregion #region Constructors, Destructors and Finalizers [UsedImplicitly] public Settings() { } #endregion #region Interface public event PropertyChangedEventHandler PropertyChanged; #endregion #region Private Methods [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } }