public void MoveToMonitor(Monitor monitor)
        {
            //            if (_window.IsLoaded)
            //            {
            //                _window.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action<Monitor>(MoveToMonitor), monitor);
            //                return;
            //            }
            this._window.Left = monitor.WorkArea.Left;
            this._window.Top = monitor.WorkArea.Top;
            this._window.Width = monitor.WorkArea.Width;
            this._window.Height = monitor.WorkArea.Height;

            //TODO: move monitor by win32 functions instead?
            //http://msdn.microsoft.com/en-us/library/dd162826(v=vs.85).aspx
        }
        /// <summary>
        /// Returns the number of Displays using the Win32 functions
        /// </summary>
        /// <returns>collection of Display Info</returns>
        private IEnumerable<Monitor> EnumerateMonitors()
        {
            var col = new List<Monitor>();
            int i = 0;
            Win32.User32.EnumDisplayMonitors(IntPtr.Zero,
                                             IntPtr.Zero,
                                             delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Win32.RECT lprcMonitor, IntPtr dwData)
                                             {
                                                 var di = new Monitor(hMonitor, i);
                                                 col.Add(di);
                                                 i++;
                                                 return true;
                                             },
                                             IntPtr.Zero);

            return col;
        }
 public MonitorVM(Monitor monitor)
 {
     _monitor = monitor;
     _hlaMonitor = new HighLevelMonitor(_monitor.HMonitor);
 }