MainWindow.xaml
MainWindow.xaml.cs
using System.Windows;
using System.Windows.Threading;
using EllipsePropertyChangeDemo;
namespace EllipsePropertyChangeDemo
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
EllipseViewModel evm = new EllipseViewModel();
public MainWindow()
{
InitializeComponent();
DataContext = evm;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (evm.ServerConnected)
{
evm.ServerConnected = false;
eButton.Content = evm.ServerConnected.ToString();
}
else
{
evm.ServerConnected = true;
eButton.Content = evm.ServerConnected.ToString();
}
}
}
}
EllipseControl.xaml
EllipseControl.xaml.cs
using System.Windows.Controls;
using System.ComponentModel;
using System.Windows;
using EllipsePropertyChangeDemo;
namespace EllipsePropertyChangeDemo
{
///
/// Interaction logic for EllipseControl.xaml
///
public partial class EllipseControl : UserControl
{
EllipseViewModel evm = new EllipseViewModel();
public EllipseControl()
{
InitializeComponent();
// evm.PropertyChanged += UpdateLED;
}
private void UpdateLED (object sender, PropertyChangedEventArgs e)
{
if (e.Equals(true))
{
this.LED.Style = (Style) App.Current.FindResource("GreenLED");
}
}
}
}
EllipseViewModel.cs
using System.Runtime.CompilerServices;
using System.Windows.Controls;
using System.ComponentModel;
using System.Windows;
namespace EllipsePropertyChangeDemo
{
public class EllipseViewModel : ObservablePropertyChange // DependencyObject
{
private bool _ServerConnected;
public bool ServerConnected
{
get { return _ServerConnected; }
set { if (_ServerConnected != value)
{
_ServerConnected = value;
OnPropertyChanged();
}
}
}
}
}
EllipseViewModel.cs
ObservablePropertyChange.cs
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace EllipsePropertyChangeDemo
{
public class ObservablePropertyChange : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
internal void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
App.xaml