App.xaml
_________________________________________________________
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
namespace EllipsePropertyChangeDemo
{
public class EllipseViewModel : ObservablePropertyChange, ICommand // DependencyObject
{
public bool _ServerConnected;
public bool ServerConnected
{
get { return _ServerConnected; }
set
{
if (_ServerConnected != value)
{
_ServerConnected = value;
OnPropertyChanged();
}
}
}
public event EventHandler? CanExecuteChanged;
public bool CanExecute(object? parameter) => true;
public void Execute(object? parameter) => ServerConnected = !ServerConnected;
}
public class ObservablePropertyChange : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
internal void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
________________________________________________________
______________________________________________________
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
namespace EllipsePropertyChangeDemo
{
///
/// Interaction logic for EllipseControl.xaml
///
public partial class EllipseControl : UserControl
{
EllipseViewModel evm = new EllipseViewModel();
public EllipseControl()
{
InitializeComponent();
//this.DataContext = evm;
//evm.PropertyChanged += UpdateLED;
}
private void UpdateLED(object sender, PropertyChangedEventArgs e)
{
if (e.Equals(true))
{
this.LED.Style = (Style)App.Current.FindResource("GreenLED");
}
}
}
}
__________________________________________________
________________________________________________________
_____________________________________________________
using System.Windows;
namespace EllipsePropertyChangeDemo
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}