private void UpdateQueryView(ICatpchaQueryView oldView, ICatpchaQueryView newView) { if (oldView != newView) { if (oldView != null) { oldView.PropertyChanged -= QueryViewOnPropertyChanged; } if (newView != null) { newView.PropertyChanged += QueryViewOnPropertyChanged; } if (oldView != newView) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CanLoad))); } } }
private void UpdateCaptchaData() { var ov = queryView; try { if (ov != null && QueryParam != null) { if (oldCaptchaType == QueryParam.CaptchaType || StringComparer.CurrentCultureIgnoreCase.Equals(oldEngine, QueryParam.Engine)) { return; } } CaptchaContainer.Children.Clear(); if (QueryParam != null) { if (QueryParam.CaptchaType == CaptchaType.DvachCaptcha && CoreConstants.Engine.Makaba.Equals(QueryParam.Engine, StringComparison.OrdinalIgnoreCase)) { var qv = new DvachCaptchaQueryView(); queryView = qv; CaptchaContainer.Children.Add(qv); qv.CaptchaQueryResult += (sender, e) => { CaptchaQueryResult?.Invoke(this, e); }; UnknownCaptcha.Visibility = Visibility.Collapsed; CaptchaContainer.Visibility = Visibility.Visible; return; } } queryView = null; UnknownCaptcha.Visibility = Visibility.Visible; CaptchaContainer.Visibility = Visibility.Collapsed; } finally { oldCaptchaType = QueryParam?.CaptchaType; oldEngine = QueryParam?.Engine; UpdateQueryView(ov, queryView); } }