private void OpenKernelPopup() { var coinVm = Vm.MinerProfile.CoinVm; if (coinVm == null) { return; } var popup = PopupKernel; popup.IsOpen = true; var selected = coinVm.CoinKernel; CoinKernelSelectViewModel vm = null; // 如果服务器上下文刷新了则视图模型一定不等,因为上下文刷新后服务器视图模型会清空重建 bool newVm = popup.Child == null || ((CoinKernelSelectViewModel)((CoinKernelSelect)popup.Child).DataContext).Coin != coinVm; if (newVm) { vm = new CoinKernelSelectViewModel(coinVm, selected, onOk: selectedResult => { if (selectedResult != null) { if (coinVm.CoinKernel != selectedResult) { coinVm.CoinKernel = selectedResult; } else { selectedResult?.Kernel?.OnPropertyChanged(nameof(selectedResult.Kernel.FullName)); } popup.IsOpen = false; } }) { HideView = new DelegateCommand(() => { popup.IsOpen = false; }) }; } if (popup.Child == null) { popup.Child = new CoinKernelSelect(vm); } else if (newVm) { ((CoinKernelSelect)popup.Child).DataContext = vm; } else { ((CoinKernelSelect)popup.Child).Vm.SelectedResult = selected; } }
public CoinKernelSelect(CoinKernelSelectViewModel vm) { this.DataContext = vm; InitializeComponent(); this.OnLoaded(window => { window.AddEventPath <CoinKernelVmAddedEvent>("添加了币种内核后,如果添加的币种内核是当前选中的币种的币种内核则刷新币种内核选择下拉列表的Vm内存", LogEnum.DevConsole, action: message => { if (message.Event.Source.CoinId == vm.Coin.Id) { vm.OnPropertyChanged(nameof(vm.QueryResults)); } }, this.GetType()); window.AddEventPath <CoinKernelVmRemovedEvent>("删除了币种内核后,如果删除的币种内核是当前选中的币种的币种内核则刷新币种内核选择下拉列表的Vm内存", LogEnum.DevConsole, action: message => { if (message.Event.Source.CoinId == vm.Coin.Id) { vm.OnPropertyChanged(nameof(vm.QueryResults)); } }, this.GetType()); }); }
public CoinKernelSelect(CoinKernelSelectViewModel vm) { this.DataContext = vm; InitializeComponent(); }