public void SetElement(TElement element) { var oldElement = Element; Element = element; if (oldElement != null) { oldElement.PropertyChanged -= _propertyChangedHandler; } if (element != null) { if (element.BackgroundColor != Color.Default || (oldElement != null && element.BackgroundColor != oldElement.BackgroundColor)) { SetBackgroundColor(element.BackgroundColor); } UpdateClipToBounds(); if (_tracker == null) { _tracker = new VisualElementTracker(this); _tracker.NativeControlUpdated += (sender, e) => UpdateNativeWidget(); } if (AutoPackage && _packager == null) { _packager = new VisualElementPackager(this); _packager.Load(); } if (AutoTrack && _events == null) { _events = new EventTracker(this); _events.LoadEvents(this); } element.PropertyChanged += _propertyChangedHandler; } OnElementChanged(new ElementChangedEventArgs <TElement>(oldElement, element)); if (element != null) { SendVisualElementInitialized(element, this); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) { SetAutomationId(Element.AutomationId); } #if __MOBILE__ SetAccessibilityLabel(); SetAccessibilityHint(); SetIsAccessibilityElement(); #endif }
void Dispose(bool disposing) { if (_disposed) { return; } _disposed = true; if (disposing) { EffectUtilities.UnregisterEffectControlProvider(this, Element); if (Element != null) { Element.PropertyChanged -= OnElementPropertyChanged; } if (_renderer != null) { _renderer.ElementChanged -= OnElementChanged; _renderer.ElementPropertyChanged -= OnElementPropertyChanged; _renderer = null; } _gestureManager?.Dispose(); _automationPropertiesProvider?.Dispose(); } }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; FinishedCustomizingViewControllers += HandleFinishedCustomizingViewControllers; Tabbed.PropertyChanged += OnPropertyChanged; Tabbed.PagesChanged += OnPagesChanged; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); OnPagesChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); if (element != null) { element.SendViewInitialized(NativeView); } //disable edit/reorder of tabs CustomizableViewControllers = null; UpdateBarBackgroundColor(); UpdateBarBackground(); UpdateBarTextColor(); UpdateSelectedTabColors(); UpdateBarTranslucent(); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; Element.SizeChanged += PageOnSizeChanged; _masterController = new ChildViewController(); _detailController = new ChildViewController(); _clickOffView = new UIView(); _clickOffView.BackgroundColor = new Color(0, 0, 0, 0).ToUIColor(); Presented = ((MasterDetailPage)Element).IsPresented; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); // Cannot carry out the invocation below because we do not have access to VisualElement.SendViewInitialized(). // However, it does not seem to be used at all in the current Xamarin.Forms implementation so we can ignore it here. // //if (element != null) //element.SendViewInitialized(NativeView); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; ViewControllers = new[] { _flyoutController = new EventedViewController(), _detailController = new ChildViewController() }; if (!Forms.IsiOS9OrNewer) { Delegate = _innerDelegate = new InnerDelegate(FlyoutPage.FlyoutLayoutBehavior); } UpdateControllers(); _flyoutController.DidAppear += FlyoutControllerDidAppear; _flyoutController.WillDisappear += FlyoutControllerWillDisappear; PresentsWithGesture = FlyoutPage.IsGestureEnabled; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (element != null) { element.SendViewInitialized(NativeView); } }
public void SetElement(VisualElement element) { var oldElement = Element; if (oldElement != null) { oldElement.PropertyChanged -= HandlePropertyChanged; } Element = element; if (Element != null) { UpdateContent(); Element.PropertyChanged += HandlePropertyChanged; } if (!_init) { _init = true; Tracker = new VisualElementTracker(this); SetOnRefreshListener(this); } UpdateColors(); UpdateIsRefreshing(); UpdateIsEnabled(); ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, Element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; ViewControllers = new[] { _masterController = new EventedViewController(), _detailController = new ChildViewController() }; if (!Forms_iOS.IsiOS9OrNewer) { Delegate = _innerDelegate = new InnerDelegate(MasterDetailPage.MasterBehavior); } UpdateControllers(); _masterController.WillAppear += MasterControllerWillAppear; _masterController.WillDisappear += MasterControllerWillDisappear; PresentsWithGesture = MasterDetailPage.IsGestureEnabled; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); var sendViewInitializedMethod = typeof(Forms).GetMethod("SendViewInitialized", BindingFlags.Static | BindingFlags.NonPublic); sendViewInitializedMethod?.Invoke(null, new object[] { element, NativeView }); }
protected override void Dispose(bool disposing) { if (CheckFlagsForDisposed()) { return; } _flags |= VisualElementRendererFlags.Disposed; if (disposing) { SetOnClickListener(null); SetOnTouchListener(null); EffectUtilities.UnregisterEffectControlProvider(this, Element); if (Tracker != null) { Tracker.Dispose(); Tracker = null; } if (_packager != null) { _packager.Dispose(); _packager = null; } if (_gestureManager != null) { _gestureManager.Dispose(); _gestureManager = null; } if (ManageNativeControlLifetime) { int count = ChildCount; for (var i = 0; i < count; i++) { AView child = GetChildAt(i); child.Dispose(); } } if (Element != null) { Element.PropertyChanged -= _propertyChangeHandler; if (Platform.GetRenderer(Element) == this) { Platform.SetRenderer(Element, null); } Element = null; } } base.Dispose(disposing); }
void IVisualElementRenderer.SetElement(VisualElement element) { if (element == null) { throw new ArgumentNullException(nameof(element)); } if (!(element is Button)) { throw new ArgumentException($"{nameof(element)} must be of type {nameof(Button)}"); } VisualElement oldElement = Button; Button = (Button)element; var reference = Guid.NewGuid().ToString(); Performance.Start(reference); if (oldElement != null) { oldElement.PropertyChanged -= OnElementPropertyChanged; } if (_backgroundTracker == null) { _backgroundTracker = new ButtonBackgroundTracker(Button, this); } else { _backgroundTracker.Button = Button; } Color currentColor = oldElement?.BackgroundColor ?? Color.Default; if (element.BackgroundColor != currentColor) { UpdateBackgroundColor(); } element.PropertyChanged += OnElementPropertyChanged; if (_tracker == null) { // Can't set up the tracker in the constructor because it access the Element (for now) SetTracker(new VisualElementTracker(this)); } OnElementChanged(new ElementChangedEventArgs <Button>(oldElement as Button, Button)); SendVisualElementInitialized(element, this); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); Performance.Stop(reference); }
public virtual void SetElement(VisualElement element) { VisualElement oldElement = Element; Element = element; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { var oldElement = Element; if (oldElement != null) { oldElement.PropertyChanged -= HandlePropertyChanged; } if (element != null) { Element = element; Element.PropertyChanged += HandlePropertyChanged; if (_packager == null) { WebView.EvalRequested += OnEvalRequested; WebView.EvaluateJavaScriptRequested += OnEvaluateJavaScriptRequested; WebView.GoBackRequested += OnGoBackRequested; WebView.GoForwardRequested += OnGoForwardRequested; WebView.ReloadRequested += OnReloadRequested; NavigationDelegate = new CustomWebViewNavigationDelegate(this); UIDelegate = new CustomWebViewUIDelegate(); BackgroundColor = UIColor.Clear; AutosizesSubviews = true; _tracker = new VisualElementTracker(this); _packager = new VisualElementPackager(this); _packager.Load(); _events = new EventTracker(this); _events.LoadEvents(this); } Load(); } OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) { AccessibilityIdentifier = Element.AutomationId; } if (element != null) { element.SendViewInitialized(this); } }
void OnElementChanged(ItemsView oldElement, ItemsView newElement) { TearDownOldElement(oldElement); SetUpNewElement(newElement); ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, newElement)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, newElement); UpdateBackgroundColor(); UpdateFlowDirection(); }
void IVisualElementRenderer.SetElement(VisualElement element) { if (element is null) { throw new ArgumentNullException(nameof(element)); } if (!(element is MediaElement)) { throw new ArgumentException($"{nameof(element)} must be of type {nameof(MediaElement)}"); } MediaElement oldElement = MediaElement; MediaElement = (MediaElement)element; Performance.Start(out string reference); if (oldElement != null) { UnsubscribeFromEvents(oldElement); } Color currentColor = oldElement?.BackgroundColor ?? Color.Default; if (element.BackgroundColor != currentColor) { UpdateBackgroundColor(); } if (MediaElement != null) { MediaElement.PropertyChanged += OnElementPropertyChanged; MediaElement.SeekRequested += SeekRequested; MediaElement.StateRequested += StateRequested; MediaElement.PositionRequested += OnPositionRequested; } if (_tracker is null) { // Can't set up the tracker in the constructor because it access the Element (for now) SetTracker(new VisualElementTracker(this)); } OnElementChanged(new ElementChangedEventArgs <MediaElement>(oldElement as MediaElement, MediaElement)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); Performance.Stop(reference); }
void OnElementChanged(object sender, VisualElementChangedEventArgs e) { if (e.OldElement != null) { e.OldElement.PropertyChanged -= OnElementPropertyChanged; } if (e.NewElement != null) { e.NewElement.PropertyChanged += OnElementPropertyChanged; UpdateBackgroundColor(); } EffectUtilities.RegisterEffectControlProvider(this, e.OldElement, e.NewElement); }
public virtual void SetElement(VisualElement element) { VisualElement oldElement = Element; Element = element; if (element != null) { element.PropertyChanged += _propertyChangedHandler; } OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { ScrollView oldElement = _view; _view = (ScrollView)element; if (oldElement != null) { oldElement.PropertyChanged -= HandlePropertyChanged; oldElement.LayoutChanged -= HandleLayoutChanged; ((IScrollViewController)oldElement).ScrollToRequested -= OnScrollToRequested; } if (element != null) { OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); if (_container == null) { Tracker = new VisualElementTracker(this); _container = new ScrollViewContainer(_view, Context); } _view.PropertyChanged += HandlePropertyChanged; _view.LayoutChanged += HandleLayoutChanged; Controller.ScrollToRequested += OnScrollToRequested; LoadContent(); UpdateBackgroundColor(); UpdateBackground(); UpdateOrientation(); UpdateIsEnabled(); UpdateHorizontalScrollBarVisibility(); UpdateVerticalScrollBarVisibility(); UpdateFlowDirection(); element.SendViewInitialized(this); if (!string.IsNullOrEmpty(element.AutomationId)) { ContentDescription = element.AutomationId; } } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
void OnElementChanged(object sender, VisualElementChangedEventArgs e) { Performance.Start(out string reference); if (e.OldElement != null) { e.OldElement.PropertyChanged -= OnElementPropertyChanged; } if (e.NewElement != null) { e.NewElement.PropertyChanged += OnElementPropertyChanged; UpdateFlowDirection(); UpdateIsEnabled(); } EffectUtilities.RegisterEffectControlProvider(this, e.OldElement, e.NewElement); Performance.Stop(reference); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; ViewControllers = new[] { _masterController = new EventedViewController(), _detailController = new ChildViewController() }; Delegate = _innerDelegate = new InnerDelegate(MasterDetailPage.MasterBehavior); Element.BackgroundColor = Color.Transparent; UpdateControllers(); _masterController.WillAppear += MasterControllerWillAppear; _masterController.WillDisappear += MasterControllerWillDisappear; PresentsWithGesture = MasterDetailPage.IsGestureEnabled; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (element != null) { MethodInfo sendViewInitialized = typeof(Xamarin.Forms.Forms).GetMethod("SendViewInitialized", BindingFlags.Static | BindingFlags.NonPublic); sendViewInitialized?.Invoke(element, new object[] { element, NativeView }); } }
public void SetElement(VisualElement element) { VisualElement oldElement = Element; Element = element; UpdateTitle(); OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); if (element != null) { if (!string.IsNullOrEmpty(element.AutomationId)) { SetAutomationId(element.AutomationId); } element.SendViewInitialized(NativeView); var parent = Element.Parent; while (!Application.IsApplicationOrNull(parent)) { if (parent is ShellContent) { _isInItems = true; } if (parent is ShellSection shellSection) { _shellSection = shellSection; ((IShellSectionController)_shellSection).AddContentInsetObserver(this); break; } parent = parent.Parent; } } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { VisualElement oldElement = Element; Element = element; UpdateTitle(); OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) { SetAutomationId(Element.AutomationId); } if (element != null) { element.SendViewInitialized(NativeView); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; UpdateTitle(); OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) { SetAutomationId(Element.AutomationId); } if (element != null) { var sendViewInitialized = typeof(Xamarin.Forms.Forms).GetMethod("SendViewInitialized", BindingFlags.Static | BindingFlags.NonPublic); sendViewInitialized?.Invoke(element, new object[] { element, NativeView }); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
protected override void OnElementChanged(ElementChangedEventArgs <WebView> e) { base.OnElementChanged(e); if (e.NewElement != null) { if (Control == null) { try { // On Linux and MacOS use C#/CLI bindings to WebKit/Gtk+: https://github.com/mono/webkit-sharp // On Windows, use the WebBrowser class from System.Windows.Forms. Control = new Controls.WebView(); } catch (Exception ex) { Log.Warning("WebView loading", $"WebView load failed: {ex}"); } SetNativeControl(Control); if (Control != null) { Control.LoadStarted += OnLoadStarted; Control.LoadFinished += OnLoadFinished; } WebViewController.EvalRequested += OnEvalRequested; WebViewController.EvaluateJavaScriptRequested += OnEvaluateJavaScriptRequested; WebViewController.GoBackRequested += OnGoBackRequested; WebViewController.GoForwardRequested += OnGoForwardRequested; WebViewController.ReloadRequested += OnReloadRequested; } } Load(); EffectUtilities.RegisterEffectControlProvider(this, e.OldElement, e.NewElement); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; Tabbed.PropertyChanged += OnPropertyChanged; Tabbed.PagesChanged += OnPagesChanged; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); OnPagesChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); if (element != null) { element.SendViewInitialized(NativeView); } //UpdateBarBackgroundColor(); //UpdateBarTextColor(); // UpdateBarIndicatorColor(); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); }
public void SetElement(VisualElement element) { var oldElement = Element; Element = element; Element.SizeChanged += PageOnSizeChanged; _flyoutController = new ChildViewController(); _detailController = new ChildViewController(); _clickOffView = new UIView(); _clickOffView.BackgroundColor = new Color(0, 0, 0, 0).ToUIColor(); Presented = ((FlyoutPage)Element).IsPresented; OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (element != null) { element.SendViewInitialized(NativeView); } }
public void SetElement(TElement element) { TElement oldElement = Element; Element = element ?? throw new ArgumentNullException(nameof(element)); Performance.Start(out string reference); if (oldElement != null) { oldElement.PropertyChanged -= _propertyChangeHandler; } Color currentColor = oldElement?.BackgroundColor ?? Color.Default; if (element.BackgroundColor != currentColor) { UpdateBackgroundColor(); } if (element.Background != null) { UpdateBackground(); } if (_propertyChangeHandler == null) { _propertyChangeHandler = OnElementPropertyChanged; } element.PropertyChanged += _propertyChangeHandler; if (oldElement == null) { SoundEffectsEnabled = false; } OnElementChanged(new ElementChangedEventArgs <TElement>(oldElement, element)); if (AutoPackage && _packager == null) { SetPackager(new VisualElementPackager(this)); } if (AutoTrack && Tracker == null) { SetTracker(new VisualElementTracker(this)); } if (oldElement != null) { Tracker?.UpdateLayout(); } if (element != null) { SendVisualElementInitialized(element, this); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (!string.IsNullOrEmpty(element.AutomationId)) { SetAutomationId(element.AutomationId); } SetContentDescription(); SetFocusable(); UpdateInputTransparent(); UpdateInputTransparentInherited(); UpdateTabStop(); UpdateTabIndex(); Performance.Stop(reference); }
public void SetElement(VisualElement element) { _requestedScroll = null; var oldElement = Element; Element = element; if (oldElement != null) { oldElement.PropertyChanged -= HandlePropertyChanged; ((ScrollView)oldElement).ScrollToRequested -= OnScrollToRequested; } if (element != null) { element.PropertyChanged += HandlePropertyChanged; ((ScrollView)element).ScrollToRequested += OnScrollToRequested; if (_packager == null) { _packager = new VisualElementPackager(this); _packager.Load(); _tracker = new VisualElementTracker(this); _tracker.NativeControlUpdated += OnNativeControlUpdated; _events = new EventTracker(this); _events.LoadEvents(this); _insetTracker = new KeyboardInsetTracker(this, () => Window, insets => { ContentInset = ScrollIndicatorInsets = insets; }, point => { var offset = ContentOffset; offset.Y += point.Y; SetContentOffset(offset, true); }, this); } UpdateDelaysContentTouches(); UpdateContentSize(); UpdateBackgroundColor(); UpdateBackground(); UpdateIsEnabled(); UpdateVerticalScrollBarVisibility(); UpdateHorizontalScrollBarVisibility(); OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (element != null) { element.SendViewInitialized(this); } if (!string.IsNullOrEmpty(element.AutomationId)) { AccessibilityIdentifier = element.AutomationId; } } }
public void SetElement(TElement element) { var oldElement = Element; Element = element; Performance.Start(out string reference); if (oldElement != null) { oldElement.PropertyChanged -= _propertyChangedHandler; } if (element != null) { if (element.BackgroundColor != null || (oldElement != null && element.BackgroundColor != oldElement.BackgroundColor)) { SetBackgroundColor(element.BackgroundColor); } if (element.Background != null && (!element.Background.IsEmpty || (oldElement != null && element.Background != oldElement.Background))) { SetBackground(element.Background); } UpdateClipToBounds(); if (_tracker == null) { _tracker = new VisualElementTracker(this); _tracker.NativeControlUpdated += (sender, e) => UpdateNativeWidget(); } if (AutoPackage && _packager == null) { _packager = new VisualElementPackager(this); _packager.Load(); } // TODO MAUI AUTOTRACK? if (AutoTrack && _events == null) { // _events = new EventTracker(this); //_events.LoadEvents(this); } element.PropertyChanged += _propertyChangedHandler; } OnElementChanged(new ElementChangedEventArgs <TElement>(oldElement, element)); if (element != null) { SendVisualElementInitialized(element, this); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) { SetAutomationId(Element.AutomationId); } if (element != null) { SetAccessibilityLabel(); } SetAccessibilityHint(); SetIsAccessibilityElement(); SetAccessibilityElementsHidden(); Performance.Stop(reference); }
void OnElementChanged(ItemsView oldElement, ItemsView newElement) { ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, newElement)); EffectUtilities.RegisterEffectControlProvider(this, oldElement, newElement); OnElementChanged(new ElementChangedEventArgs <ItemsView>(oldElement, newElement)); }
void IVisualElementRenderer.SetElement(VisualElement element) { if (element == null) { throw new ArgumentNullException(nameof(element)); } if (!(element is Entry)) { throw new ArgumentException($"{nameof(element)} must be of type {nameof(Entry)}"); } VisualElement oldElement = Entry; Entry = (Entry)element; Performance.Start(out string reference); if (oldElement != null) { oldElement.PropertyChanged -= OnElementPropertyChanged; oldElement.FocusChangeRequested -= OnFocusChangeRequested; } if (oldElement == null) { _textInputEditText = new MaterialFormsEditText(Context); AddView(_textInputEditText); _textInputEditText.FocusChange += _textInputEditText_FocusChange; Hint = Entry.Placeholder; _textInputEditText.AddTextChangedListener(this); _textInputEditText.SetOnEditorActionListener(this); _textInputEditText.OnKeyboardBackPressed += OnKeyboardBackPressed; _textInputEditText.SelectionChanged += SelectionChanged; var useLegacyColorManagement = Entry.UseLegacyColorManagement(); _textColorSwitcher = new TextColorSwitcher(_textInputEditText.TextColors, useLegacyColorManagement); _hintColorSwitcher = new TextColorSwitcher(_textInputEditText.HintTextColors, useLegacyColorManagement); } // When we set the control text, it triggers the SelectionChanged event, which updates CursorPosition and SelectionLength; // These one-time-use variables will let us initialize a CursorPosition and SelectionLength via ctor/xaml/etc. _cursorPositionChangePending = Element.IsSet(Entry.CursorPositionProperty); _selectionLengthChangePending = Element.IsSet(Entry.SelectionLengthProperty); Hint = Entry.Placeholder; _textInputEditText.Text = Entry.Text; UpdateInputType(); UpdateColor(); UpdateAlignment(); UpdateFont(); UpdatePlaceholderColor(true); UpdateMaxLength(); UpdateImeOptions(); UpdateReturnType(); UpdateBackgroundColor(); if (_cursorPositionChangePending || _selectionLengthChangePending) { UpdateCursorSelection(); } element.PropertyChanged += OnElementPropertyChanged; if (_tracker == null) { _tracker = new VisualElementTracker(this); } element.SendViewInitialized(this); EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); Performance.Stop(reference); ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, element)); element.FocusChangeRequested += OnFocusChangeRequested; }
public void SetElement(TElement element) { if (element == null) { throw new ArgumentNullException(nameof(element)); } TElement oldElement = Element; Element = element; Performance.Start(); if (oldElement != null) { oldElement.PropertyChanged -= _propertyChangeHandler; } // element may be allowed to be passed as null in the future if (element != null) { Color currentColor = oldElement != null ? oldElement.BackgroundColor : Color.Default; if (element.BackgroundColor != currentColor) { UpdateBackgroundColor(); } } if (_propertyChangeHandler == null) { _propertyChangeHandler = OnElementPropertyChanged; } element.PropertyChanged += _propertyChangeHandler; if (oldElement == null) { SoundEffectsEnabled = false; } OnElementChanged(new ElementChangedEventArgs <TElement>(oldElement, element)); if (AutoPackage && _packager == null) { SetPackager(new VisualElementPackager(this)); } if (AutoTrack && Tracker == null) { SetTracker(new VisualElementTracker(this)); } if (element != null) { SendVisualElementInitialized(element, this); } EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); if (element != null && !string.IsNullOrEmpty(element.AutomationId)) { SetAutomationId(element.AutomationId); } SetContentDescription(); SetFocusable(); UpdateInputTransparent(); Performance.Stop(); }