public void Execute() { var src = new Person(); using (var dest = new DelegateCommand( () => src.Name = "Done", () => src.Age > 0 )) { var count = 0; dest.Refresh(); dest.CanExecuteChanged += (s, e) => ++ count; dest.Associate(src); Assert.That(dest.CanExecute(), Is.False); Assert.That(count, Is.EqualTo(0)); src.Age = 10; Assert.That(dest.CanExecute(), Is.True); Assert.That(count, Is.EqualTo(1)); src.Age = -20; Assert.That(dest.CanExecute(), Is.False); Assert.That(count, Is.EqualTo(2)); dest.Refresh(); dest.Execute(); Assert.That(src.Name, Is.EqualTo("Done")); Assert.That(count, Is.EqualTo(4)); } }
public void Execute_Generic() { var src = new Person(); using (var dest = new DelegateCommand <int>( e => src.Name = $"Done:{e}", e => e > 0 && src.Age > 0 )) { var count = 0; dest.Refresh(); dest.CanExecuteChanged += (s, e) => ++ count; dest.Associate(src); Assert.That(dest.CanExecute(-10), Is.False); Assert.That(dest.CanExecute(10), Is.False); Assert.That(count, Is.EqualTo(0)); src.Age = 10; Assert.That(dest.CanExecute(-20), Is.False); Assert.That(dest.CanExecute(20), Is.True); Assert.That(count, Is.EqualTo(1)); src.Age = -20; Assert.That(dest.CanExecute(-30), Is.False); Assert.That(dest.CanExecute(30), Is.False); Assert.That(count, Is.EqualTo(2)); dest.Refresh(); dest.Execute(40); Assert.That(src.Name, Is.EqualTo("Done:40")); Assert.That(count, Is.EqualTo(4)); } }
/* ----------------------------------------------------------------- */ /// /// GetOkCommand /// /// <summary> /// Gets the OK command. /// </summary> /// /* ----------------------------------------------------------------- */ private ICommand GetOkCommand(Action <int, IEnumerable <FileItem> > callback) { var dest = new DelegateCommand( () => { Send <CloseMessage>(); callback?.Invoke(Value.Index, Value.Files); }, () => Value.Files.Count > 0 ); Value.Files.CollectionChanged += (s, e) => dest.Refresh(); return(dest); }
protected override void AfterPropertyChanged(string propertyName) { base.AfterPropertyChanged(propertyName); mAcceptCommand.Refresh(); }
public MainPageViewModel(IServiceProvider serviceProvider, AppViewModel appViewModel) : base(serviceProvider, appViewModel) { m_connectionInfoProperty = CreateDictionaryProperty(() => ConnectionInfo, () => null); m_connectionInfoTaskStatusProperty = CreateDictionaryProperty(() => ConnectionInfoTaskStatus, () => TaskStatus.Created); m_dhcpInfoProperty = CreateDictionaryProperty(() => DhcpInfo, () => null); m_dhcpInfoTaskStatusProperty = CreateDictionaryProperty(() => DhcpInfoTaskStatus, () => TaskStatus.Created); m_externalAddressProperty = CreateDictionaryProperty(() => ExternalAddress, () => null); m_externalAddressTaskStatusProperty = CreateDictionaryProperty(() => ExternalAddressTaskStatus, () => TaskStatus.Created); m_statusProperty = CreateDictionaryProperty(() => Status, () => String.Empty); m_progressPercentProperty = CreateDictionaryProperty(() => ProgressPercent, () => 0.0d); m_isScanInProgressProperty = CreateDictionaryProperty(() => IsScanInProgress, () => false); m_customSelectionCommandsProperty = CreateDictionaryProperty(() => CustomSelectionCommands, () => new ObservableCollection <UICommand>()); m_startAddressValueProperty = CreateSettingsProperty(V1SettingsConstants.StartAddressValueKey, () => StartAddressValue, () => 0u, () => { UpdateActionBarControls(); }); m_isStartAddressValidProperty = CreateDictionaryProperty(() => IsStartAddressValid, () => false); m_endAddressValueProperty = CreateSettingsProperty(V1SettingsConstants.EndAddressValueKey, () => EndAddressValue, () => 0u, () => { UpdateActionBarControls(); }); m_isEndAddressValidProperty = CreateDictionaryProperty(() => IsEndAddressValid, () => false); var hostInfoService = ServiceProvider.GetService <IHostInfoService>(); var hostInfo = hostInfoService.GetCurrentHostInfo(); if (hostInfo == null) { Status = Strings.Status_GetHostInfoFailed; } else { var connectionInfoTask = RunGetConnectionInfoAsync(hostInfo); var dhcpInfoTask = RunGetDhcpInfoAsync(hostInfo); var externalAddressTask = RunGetExternalAddressAsync(); Task.Factory.ContinueWhenAll(new[] { connectionInfoTask, dhcpInfoTask }, t => { if (ConnectionInfo != null) { if (DhcpInfo != null && DhcpInfo.DnsServerAddress != null) { m_dnsResolver = new UdpDnsResolver( new DnsResolverOptions(), new DatagramSocketFactory(), new IPEndpoint(DhcpInfo.DnsServerAddress, Constants.DefaultDnsPort)); } SetAddressValues(ConnectionInfo.Network); IsScanInProgress = false; m_isScanCommandEnabled = true; m_scanCommand.Refresh(); m_isCancelScanCommandEnabled = false; m_cancelScanCommand.Refresh(); } }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); } m_scanCommand = new DelegateCommand(async() => { var scanStopwatch = new Stopwatch(); scanStopwatch.Start(); m_tokenSource = new CancellationTokenSource(); AvailableServices.Clear(); IsScanInProgress = true; m_isScanCommandEnabled = false; m_scanCommand.Refresh(); m_isCancelScanCommandEnabled = true; m_cancelScanCommand.Refresh(); Status = Strings.Status_ScanStarted; var selectedAddresses = new IPAddressRange(StartAddressValue, EndAddressValue); var networkServices = await GetNetworkServicesAsync(); var index = 0; var progress = (IProgress <ScanNetworkBatch>) new Progress <ScanNetworkBatch>(batch => { foreach (var result in batch.Results) { if (result.IsAvailable) { AvailableServices.Add(result); } } index += batch.Results.Count; ProgressPercent = 100.0d * index / (selectedAddresses.Count * networkServices.Length); }); var task = Task.Factory.StartNew( arg => { Scanner.ScanNetwork(m_tokenSource.Token, m_dnsResolver, selectedAddresses, networkServices, progress); }, m_tokenSource.Token, TaskCreationOptions.None); var t1 = task.ContinueWith(t => { IsScanInProgress = false; m_isScanCommandEnabled = true; m_scanCommand.Refresh(); m_isCancelScanCommandEnabled = false; m_cancelScanCommand.Refresh(); var isCancelled = m_tokenSource.Token.IsCancellationRequested; if (isCancelled) { Status = Strings.Status_ScanCancelled; ProgressPercent = 0.0d; } else { scanStopwatch.Stop(); var timeSpan = scanStopwatch.Elapsed; Status = Strings.Format_Status_ScanCompleted(timeSpan); ProgressPercent = 100.0d; } m_tokenSource.Dispose(); }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); }, () => m_isScanCommandEnabled); m_cancelScanCommand = new DelegateCommand(() => { m_isCancelScanCommandEnabled = false; m_cancelScanCommand.Refresh(); m_tokenSource.Cancel(); }, () => m_isCancelScanCommandEnabled); m_showServicesCommand = new DelegateCommand(() => { AppViewModel.NavigateToServicesPage(); }); m_launchUriCommand = new DelegateCommand <IPEndpoint>(endpoint => { AppViewModel.NavigateToBrowserPage(endpoint); }); }
private void OnSelectedUserServicesCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { m_removeUserServiceCommand.Refresh(); }
protected override void InternalOnListChanged(ListChangedType type) { base.InternalOnListChanged(type); mApplyCommand.Refresh(); }