public LauncherViewModel(MainForm view) { SimpleConfirmHandler = message => MessageBox.Show(View, message, "操作确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK; SimpleHandler = (success, message) => MessageBox.Show(View, message, success ? "操作成功" : "操作失败", MessageBoxButtons.OK, success ? MessageBoxIcon.Information : MessageBoxIcon.Error); SimpleFailureHandler = (success, message) => { if (!success) { MessageBox.Show(View, message, "操作失败", MessageBoxButtons.OK, MessageBoxIcon.Error); } }; View = view; Dispatcher = new DispatcherWrapper(a => View.Invoke(a), a => View.BeginInvoke(a), () => !View.InvokeRequired); var settings = Properties.Settings.Default; if (settings.UpgradeRequired) { settings.Upgrade(); settings.UpgradeRequired = false; settings.Save(); } SuppressInfo = settings.SuppressInfo; LogTextWrapping = settings.LogTextWrapping; }
private void FaceDetection_FaceDetected(FaceDetectionEffect sender, FaceDetectedEventArgs args) { DispatcherWrapper.Current().Dispatch(() => { var properties = DefaultManager.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview) as VideoEncodingProperties; if (properties == null || properties.Width == 0 || properties.Height == 0) { return; } var canvas = FacesCanvas.Child as Canvas; canvas.Height = properties.Height; canvas.Width = properties.Width; FaceDetected?.Invoke(sender, args); canvas.Children.Clear(); foreach (var face in args.ResultFrame.DetectedFaces.Where(x => x.FaceBox.Width != 0 && x.FaceBox.Height != 0)) { var box = new Rectangle { Height = face.FaceBox.Height, Width = face.FaceBox.Width, Stroke = FacesBoxColor.ToSolidColorBrush(), StrokeThickness = 2, }; Canvas.SetLeft(box, face.FaceBox.X); Canvas.SetTop(box, face.FaceBox.Y); canvas.Children.Add(box); } FaceCountChanged?.Invoke(this, canvas.Children.Count()); }); }
public async Task <ViewLifetimeControl> OpenAsync(Type page, object parameter = null, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf) { WriteLine($"Page: {page}, Parameter: {parameter}, Title: {title}, Size: {size}"); var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); var newControl = await dispatcher.Dispatch(async() => { var control = ViewLifetimeControl.GetForCurrentView(); var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; var nav = BootStrapper.Current.NavigationServiceFactory(BootStrapper.BackButton.Ignore, BootStrapper.ExistingContent.Exclude); control.NavigationService = nav; nav.Navigate(page, parameter); newWindow.Content = nav.Frame; newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); return(control); }).ConfigureAwait(false); return(newControl); }
public WindowWrapper(Window window) { if (ActiveWrappers.Any(x => x.Window == window)) { throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); } Window = window; ActiveWrappers.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.Closed += (s, e) => { ActiveWrappers.Remove(this); }; _busyIndicator = new Grid { Background = new SolidColorBrush(Colors.Black) { Opacity = .5 }, }; _busyIndicator.Children.Add(new ProgressRing { Height = 100, Width = 100, Foreground = new SolidColorBrush(Colors.White), IsActive = true, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }); }
public LauncherViewModel(MainWindow view) { View = view; Dispatcher = new DispatcherWrapper(View.Dispatcher.Invoke, a => View.Dispatcher.BeginInvoke(a), View.Dispatcher.CheckAccess); CurrentTabTester = new TabIndexTester(this); var settings = Properties.Settings.Default; if (settings.UpgradeRequired) { settings.Upgrade(); settings.UpgradeRequired = false; settings.Save(); } View.Width = settings.Width; View.Height = settings.Height; Theme = settings.Theme; LogTextWrapping = settings.LogTextWrapping; SuppressNotification = settings.SuppressNotification; LogsViewSource.Filter += e => { var item = e as LogModel; return(LogSourceFilter == "" || item.Source == LogSourceFilter); }; }
internal WindowWrapper(Window window) { Window = window; Dispatcher = new DispatcherWrapper(window.Dispatcher); window.CoreWindow.Closed += (s, e) => WindowWrapperManager.Instances.Remove(this); window.Closed += (s, e) => WindowWrapperManager.Instances.Remove(this); window.Activate(); IsMainView = CoreApplication.MainView == CoreApplication.GetCurrentView(); _DisplayInformation = new Lazy <DisplayInformation>(() => { Window.Activate(); return(Dispatcher.Dispatch(() => DisplayInformation.GetForCurrentView())); }); _ApplicationView = new Lazy <ApplicationView>(() => { Window.Activate(); return(Dispatcher.Dispatch(() => ApplicationView.GetForCurrentView())); }); _UIViewSettings = new Lazy <UIViewSettings>(() => { Window.Activate(); return(Dispatcher.Dispatch(() => UIViewSettings.GetForCurrentView())); }); }
public async Task<ViewLifetimeControl> OpenAsync(Type page, object parameter = null, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf) { WriteLine($"Page: {page}, Parameter: {parameter}, Title: {title}, Size: {size}"); var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); var newControl = await dispatcher.Dispatch(async () => { var control=ViewLifetimeControl.GetForCurrentView(); var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; var nav = BootStrapper.Current.NavigationServiceFactory(BootStrapper.BackButton.Ignore, BootStrapper.ExistingContent.Exclude); control.NavigationService = nav; nav.Navigate(page, parameter); newWindow.Content = nav.Frame; newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); return control; }).ConfigureAwait(false); return newControl; }
public Task FillItemsAsync() { return(Task.Run(async delegate { var dispatcher = DispatcherWrapper.Current(); //Для потомков //await dispatcher.DispatchAsync(() => items.Clear()); //foreach (var item in Randomizer // .Configure(ItemsRequired, UniqueOnly, SortAfter) // .RollItems() // .Select(x => new ArrayItem(x))) //{ // await dispatcher.DispatchAsync(() => items.Add(item)); //} var items = new ObservableCollection <ArrayItem>(Randomizer.Configure(ItemsRequired, UniqueOnly, SortAfter) .RollItems() .Select(x => new ArrayItem(x))); await dispatcher.DispatchAsync(delegate { ArraySource.Instance.Items = items; }); })); }
public async Task OpenAsync(Type page, object parameter = null, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf) { DebugWrite($"Page: {page}, Parameter: {parameter}, Title: {title}, Size: {size}"); var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); await dispatcher.DispatchAsync(async() => { var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; var frame = BootStrapper.Current.NavigationServiceFactory(BootStrapper.BackButton.Ignore, BootStrapper.ExistingContent.Exclude); frame.Navigate(page, parameter); newWindow.Content = frame.Frame; newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); }); }
public async Task <IViewLifetimeControl> OpenAsync(UIElement content, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf) { WriteLine($"Frame: {content}, Title: {title}, Size: {size}"); var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); var newControl = await dispatcher.Dispatch(async() => { var control = ViewLifetimeControl.GetForCurrentView(); var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; // TODO: (Jerry) // control.NavigationService = nav; newWindow.Content = content; newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); return(control); }).ConfigureAwait(false); return(newControl); }
public WindowWrapper(Window window) { if (ActiveWrappers.Any(x => x.Window == window)) throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); Window = window; ActiveWrappers.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.Closed += (s, e) => { ActiveWrappers.Remove(this); }; }
public NavButtonBehavior() { if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled) { _dispatcher = DispatcherWrapper.Current(); _throttleHelper = new EventThrottleHelper { Throttle = 1000 }; } }
/// <summary> /// Adds the collection of T to our collection. /// </summary> /// <param name="collection">The collection to load the new items from.</param> /// <param name="notify">The dispatcher wrapper to used for thread access.</param> public void Append(IEnumerable <T> collection, DispatcherWrapper notify = null) { try { InternalSet(collection, false); } finally { Reset(notify); } }
public void Setup() { unitOfWork = new UnitOfWork(); appViewModel = new Mock <IApplicationViewModel <DCPersonnel> >(); dispatcherWrapper = new DispatcherWrapper(); parentPage = new ParentPage(); security = new Security(); viewModel = new BloodDonationRequestsViewModel(unitOfWork, appViewModel.Object, dispatcherWrapper, security) { ParentPage = parentPage }; }
public void Setup() { unitOfWork = new UnitOfWork(); appViewModel = new Mock <IApplicationViewModel <Administrator> >(); dispatcherWrapper = new DispatcherWrapper(); parentPage = new ParentPage(); security = new Security(); viewModel = new DonationCentersViewModel(unitOfWork, appViewModel.Object, dispatcherWrapper, security) { ParentPage = parentPage }; }
internal void SomeCode() { // A UI application would call... var dispatcher = Dispatcher.CurrentDispatcher; var dispatcherWrapper = new DispatcherWrapper(action => dispatcher.BeginInvoke(action)); // A non-UI application would call... dispatcherWrapper = new DispatcherWrapper(action => action()); // The library code would call.. dispatcherWrapper.Dispatch(() => { // This code runs on the UI thread in UI apps and on any thread in non-UI apps. }); }
public PlaybackService() { // Create the player instance _player = new MediaPlayer(); _player.PlaybackSession.PositionChanged += PlaybackSession_PositionChanged; _player.PlaybackSession.PlaybackStateChanged += PlaybackSession_PlaybackStateChanged; _playlist = new MediaPlaybackList(); _playlist.CurrentItemChanged += _playlist_CurrentItemChanged; _player.Source = _playlist; _player.Play(); Dispatcher = new DispatcherWrapper(CoreApplication.MainView.CoreWindow.Dispatcher); }
internal WindowWrapper(Window window) { if (Current(window) != null) { throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); } Window = window; ActiveWrappers.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.CoreWindow.Closed += (s, e) => { ActiveWrappers.Remove(this); }; window.Closed += (s, e) => { ActiveWrappers.Remove(this); }; }
public WindowWrapper(Window window) : this() { if (Current(window) != null) { throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); } Window = window; Instances.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.CoreWindow.Closed += (s, e) => { Instances.Remove(this); }; window.Closed += (s, e) => { Instances.Remove(this); }; }
internal WindowWrapper(Window window) { if (Current(window) != null) { throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); } Window = window; ActiveWrappers.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.CoreWindow.Closed += (s, e) => { ActiveWrappers.Remove(this); }; window.Closed += (s, e) => { ActiveWrappers.Remove(this); }; }
private static async Task <T> ShowAsync <T>(Func <Task <T> > show, IDispatcherWrapper dispatcher) { lock (DialogState) { while (DialogState.Showing) { Monitor.Wait(DialogState); } DialogState.Showing = true; } dispatcher = dispatcher ?? DispatcherWrapper.Current(); var result = await dispatcher.DispatchAsync(async() => await show()); lock (DialogState) { DialogState.Showing = false; Monitor.PulseAll(DialogState); } return(result); }
public ModelBase(DispatcherWrapper dispatcher = null) { Dispatcher = dispatcher; foreach (var prop in GetType().GetTypeInfo().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { var attr = prop.GetCustomAttribute <SourceBindingAttribute>(); if (attr == null) { continue; } foreach (var source in attr.Sources) { if (!SourceBinding.ContainsKey(source)) { SourceBinding[source] = new HashSet <string>(); } SourceBinding[source].Add(prop.Name); } } }
//public override async Task OnNavigatedToAsync(object parameter, navigationmode mode, idictionary<string, object> state) //{ // // defaults // price1checked = true; // price2checked = true; // star2checked = true; // star3checked = true; // selectedcuisine = "indian"; // distance = 1; // await searchasync(); //} public async Task SearchAsync() { var source = _cancellationTokens.AddAndReturn(new CancellationTokenSource()); await Task.Factory.StartNew(async() => { // TODO: convert distance number to kilos var restaurants = await _dataService.GetReataurantsAsync(); if (!source.Token.IsCancellationRequested) { DispatcherWrapper.Current().Dispatch(() => { Restaurants.Clear(); foreach (var restaurant in restaurants) { Restaurants.Add(restaurant); } }); } }, source.Token); }
public async Task DisplayResults() { var source = _cancellationTokens.AddAndReturn(new CancellationTokenSource()); await Task.Factory.StartNew(() => { _dataService.CuisineType = CuisineType; var restaurants = _dataService.listOfRestaurants().Result; if (!source.Token.IsCancellationRequested) { DispatcherWrapper.Current().Dispatch(() => { Restaurants.Clear(); foreach (var restaurant in restaurants) { Restaurants.Add(restaurant); } }); } }, source.Token); }
public LauncherViewModel(MainWindow view) { View = view; Dispatcher = new DispatcherWrapper(View.Dispatcher.Invoke, a => View.Dispatcher.BeginInvoke(a), View.Dispatcher.CheckAccess); CurrentTabTester = new TabIndexTester(this); var settings = Properties.Settings.Default; if (settings.UpgradeRequired) { settings.Upgrade(); settings.UpgradeRequired = false; settings.Save(); } View.Width = settings.Width; View.Height = settings.Height; SuppressInfo = settings.SuppressInfo; LogTextWrapping = settings.LogTextWrapping; }
public WindowWrapper(Window window) { if (ActiveWrappers.Any(x => x.Window == window)) throw new Exception("Windows already has a wrapper; use Current(window) to fetch."); Window = window; ActiveWrappers.Add(this); Dispatcher = new DispatcherWrapper(window.Dispatcher); window.Closed += (s, e) => { ActiveWrappers.Remove(this); }; _busyIndicator = new Grid { Background = new SolidColorBrush(Colors.Black) { Opacity = .5 }, }; _busyIndicator.Children.Add(new ProgressRing { Height = 100, Width = 100, Foreground = new SolidColorBrush(Colors.White), IsActive = true, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }); }
public void Attach(DependencyObject associatedObject) { _dispatcher = WindowWrapper.Current().Dispatcher; BootStrapper.BackRequested += BootStrapper_BackRequested; }
public static DelayedDispatcherTask BeginInvoke(this DispatcherWrapper wrapper, TimeSpan delay, Action method) { return(new DelayedDispatcherTask(null, delay, method)); }
public async Task <ViewLifetimeControl> OpenAsync(Type page, object parameter = null, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf, int session = 0, string id = "0") { WriteLine($"Page: {page}, Parameter: {parameter}, Title: {title}, Size: {size}"); var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; if (parameter != null && _windows.TryGetValue(parameter, out DispatcherWrapper value)) { var newControl = await value.Dispatch(async() => { var control = ViewLifetimeControl.GetForCurrentView(); var newAppView = ApplicationView.GetForCurrentView(); var preferences = ViewModePreferences.CreateDefault(ApplicationViewMode.Default); preferences.CustomSize = new Windows.Foundation.Size(360, 640); await ApplicationViewSwitcher .SwitchAsync(newAppView.Id, currentView.Id, ApplicationViewSwitchingOptions.Default); return(control); }).ConfigureAwait(false); return(newControl); } else { var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); if (parameter != null) { _windows[parameter] = dispatcher; } var bounds = Window.Current.Bounds; var newControl = await dispatcher.Dispatch(async() => { var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; var control = ViewLifetimeControl.GetForCurrentView(); control.Released += (s, args) => { if (parameter != null) { _windows.TryRemove(parameter, out DispatcherWrapper ciccio); } newWindow.Close(); }; var nav = BootStrapper.Current.NavigationServiceFactory(BootStrapper.BackButton.Ignore, BootStrapper.ExistingContent.Exclude, session, id, false); control.NavigationService = nav; nav.Navigate(page, parameter); newWindow.Content = BootStrapper.Current.CreateRootElement(nav); newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); //newAppView.TryResizeView(new Windows.Foundation.Size(360, bounds.Height)); newAppView.TryResizeView(new Windows.Foundation.Size(360, 640)); return(control); }).ConfigureAwait(false); return(newControl); } }
public async Task <ViewLifetimeControl> OpenAsync(Func <UIElement> content, object parameter, double width, double height) { if (_windows.TryGetValue(parameter, out DispatcherWrapper value)) { var newControl = await value.Dispatch(async() => { var control = ViewLifetimeControl.GetForCurrentView(); var newAppView = ApplicationView.GetForCurrentView(); var preferences = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay); preferences.CustomSize = new Size(width, height); await ApplicationViewSwitcher .TryShowAsViewModeAsync(newAppView.Id, ApplicationViewMode.CompactOverlay, preferences); return(control); }).ConfigureAwait(false); return(newControl); } else { var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); _windows[parameter] = dispatcher; var bounds = Window.Current.Bounds; var newControl = await dispatcher.Dispatch(async() => { var newWindow = Window.Current; newWindow.Closed += (s, args) => { _windows.TryRemove(parameter, out DispatcherWrapper ciccio); }; newWindow.CoreWindow.Closed += (s, args) => { _windows.TryRemove(parameter, out DispatcherWrapper ciccio); }; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Consolidated += (s, args) => { _windows.TryRemove(parameter, out DispatcherWrapper ciccio); newWindow.Close(); }; var control = ViewLifetimeControl.GetForCurrentView(); control.Released += (s, args) => { _windows.TryRemove(parameter, out DispatcherWrapper ciccio); newWindow.Close(); }; newWindow.Content = content(); newWindow.Activate(); var preferences = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay); preferences.CustomSize = new Size(width, height); await ApplicationViewSwitcher .TryShowAsViewModeAsync(newAppView.Id, ApplicationViewMode.CompactOverlay, preferences); return(control); }).ConfigureAwait(false); return(newControl); } }
public async Task OpenAsync(Type page, object parameter = null, string title = null, ViewSizePreference size = ViewSizePreference.UseHalf) { var currentView = ApplicationView.GetForCurrentView(); title = title ?? currentView.Title; var newView = CoreApplication.CreateNewView(); var dispatcher = new DispatcherWrapper(newView.Dispatcher); await dispatcher.DispatchAsync(async () => { var newWindow = Window.Current; var newAppView = ApplicationView.GetForCurrentView(); newAppView.Title = title; var frame = BootStrapper.Current.NavigationServiceFactory(BootStrapper.BackButton.Ignore, BootStrapper.ExistingContent.Exclude); frame.Navigate(page, parameter); newWindow.Content = frame.Frame; newWindow.Activate(); await ApplicationViewSwitcher .TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, currentView.Id, size); }); }
public void Attach(DependencyObject associatedObject) { AssociatedObject = associatedObject; _dispatcher = WindowWrapper.Current().Dispatcher; BootStrapper.BackRequested += BootStrapper_BackRequested; }