public static DeviceUtils Current(Common.WindowWrapper windowWrapper = null) { windowWrapper = windowWrapper ?? Common.WindowWrapper.Current(); if (!Cache.ContainsKey(windowWrapper)) { var item = new DeviceUtils(windowWrapper); Cache.Add(windowWrapper, item); windowWrapper.ApplicationView().Consolidated += new Common.WeakReference<DeviceUtils, ApplicationView, object>(item) { EventAction = (i, s, e) => Cache.Remove(windowWrapper), DetachAction = (i, w) => windowWrapper.ApplicationView().Consolidated -= w.Handler }.Handler; } return Cache[windowWrapper]; }
private DeviceUtils(Common.WindowWrapper windowWrapper) { MonitorUtils = Utils.MonitorUtils.Current(windowWrapper); var di = windowWrapper.DisplayInformation(); di.OrientationChanged += new Common.WeakReference<DeviceUtils, DisplayInformation, object>(this) { EventAction = (i, s, e) => Changed?.Invoke(i, EventArgs.Empty), DetachAction = (i, w) => di.OrientationChanged -= w.Handler }.Handler; var av = windowWrapper.ApplicationView(); av.VisibleBoundsChanged += new Common.WeakReference<DeviceUtils, ApplicationView, object>(this) { EventAction = (i, s, e) => Changed?.Invoke(i, EventArgs.Empty), DetachAction = (i, w) => av.VisibleBoundsChanged -= w.Handler }.Handler; }
private MonitorUtils(Common.WindowWrapper windowWrapper) { var di = windowWrapper.DisplayInformation(); di.OrientationChanged += new Common.WeakReference<MonitorUtils, DisplayInformation, object>(this) { EventAction = (i, s, e) => i.Changed?.Invoke(i, EventArgs.Empty), DetachAction = (i, w) => di.OrientationChanged -= w.Handler }.Handler; var av = windowWrapper.ApplicationView(); av.VisibleBoundsChanged += new Common.WeakReference<MonitorUtils, ApplicationView, object>(this) { EventAction = (i, s, e) => i.Changed?.Invoke(i, EventArgs.Empty), DetachAction = (i, w) => av.VisibleBoundsChanged -= w.Handler }.Handler; Inches = new InchesInfo(windowWrapper); Pixels = new PixelsInfo(windowWrapper); }