Advertisement
Guest User

WindowViewModel.cs

a guest
Aug 4th, 2013
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.23 KB | None | 0 0
  1. // ViewModelBase.cs
  2.     public class ViewModelBase : INotifyPropertyChanged
  3.     {
  4.         #region Implementation of INotifyPropertyChanged
  5.  
  6.         public event PropertyChangedEventHandler PropertyChanged;
  7.  
  8.         protected virtual void OnPropertyChanged([CallerMemberName] String propertyName = null)
  9.         {
  10.             if (PropertyChanged != null)
  11.                 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  12.         }
  13.  
  14.         protected virtual void OnPropertyChanged(PropertyChangedEventArgs eventArgs)
  15.         {
  16.             if (PropertyChanged != null)
  17.                 PropertyChanged(this, eventArgs);
  18.         }
  19.  
  20.         #endregion
  21.     }
  22.  
  23.  
  24.  
  25.  
  26. // WindowViewModel.cs
  27.     public class WindowViewModel : ViewModelBase
  28.     {
  29.         private Window _window;
  30.  
  31.         public WindowViewModel()
  32.         {
  33.             Window = new Window();
  34.         }
  35.  
  36.         public WindowViewModel(IntPtr handle)
  37.             : this()
  38.         {
  39.             Handle = handle;
  40.         }
  41.  
  42.         public WindowViewModel(Int32 handle)
  43.             : this(new IntPtr(handle))
  44.         {
  45.         }
  46.  
  47.         [Browsable(false)]
  48.         public Window Window
  49.         {
  50.             get { return _window; }
  51.             set
  52.             {
  53.                 _window = value;
  54.                 Refresh();
  55.             }
  56.         }
  57.  
  58.         public String Title
  59.         {
  60.             get { return _window.Title; }
  61.             set { _window.Title = value; OnPropertyChanged(); }
  62.         }
  63.  
  64.         public Boolean IsTopmost
  65.         {
  66.             get { return _window.IsTopmost; }
  67.             set { _window.IsTopmost = value; OnPropertyChanged(); }
  68.         }
  69.  
  70.         public Int32 X
  71.         {
  72.             get { return _window.Rectangle.X; }
  73.             set { _window.Rectangle = _window.Rectangle.Modify(newX: value); OnPropertyChanged(); }
  74.         }
  75.  
  76.         public Int32 Y
  77.         {
  78.             get { return _window.Rectangle.Y; }
  79.             set { _window.Rectangle = _window.Rectangle.Modify(newY: value); OnPropertyChanged(); }
  80.         }
  81.  
  82.         public Int32 Width
  83.         {
  84.             get { return _window.Rectangle.Width; }
  85.             set { _window.Rectangle = _window.Rectangle.Modify(newWidth: value); OnPropertyChanged(); }
  86.         }
  87.  
  88.  
  89.         public Int32 Height
  90.         {
  91.             get { return _window.Rectangle.Height; }
  92.             set { _window.Rectangle = _window.Rectangle.Modify(newHeight: value); OnPropertyChanged(); }
  93.         }
  94.  
  95.         public IntPtr Handle
  96.         {
  97.             get { return _window.Handle; }
  98.             set
  99.             {
  100.                 if (_window.Handle == value)
  101.                     return;
  102.                 _window.Handle = value;
  103.                 Refresh();
  104.             }
  105.         }
  106.  
  107.         public void Refresh()
  108.         {
  109.             OnPropertyChanged(new PropertyChangedEventArgs("Window"));
  110.             OnPropertyChanged(new PropertyChangedEventArgs("Handle"));
  111.             OnPropertyChanged(new PropertyChangedEventArgs("Title"));
  112.             OnPropertyChanged(new PropertyChangedEventArgs("Rectangle"));
  113.             OnPropertyChanged(new PropertyChangedEventArgs("Icon"));
  114.             OnPropertyChanged(new PropertyChangedEventArgs("IsTopmost"));
  115.         }
  116.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement