/// <summary>
        ///     Called when [loaded].
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="RoutedEventArgs" /> instance containing the event data.</param>
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            if (sender is DependencyObject dependencyObject)

            {
                this.Update(
                    AttachedFork <T, TOwner> .GetValueOrRegisterParentChanged(
                        dependencyObject,
                        i => this.UpdateValue(i)));
            }
        }
        /// <summary>
        ///     Provides the value internal.
        /// </summary>
        /// <param name="serviceProvider">The service provider.</param>
        /// <returns></returns>
        protected override object ProvideValueInternal(IServiceProvider serviceProvider)
        {
            var provideValueTarget = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));

            if (provideValueTarget.TargetObject is DependencyObject dependencyObject)
            {
                var value = AttachedFork <T, TOwner> .GetValueOrRegisterParentChanged(
                    dependencyObject,
                    i => this.UpdateValue(i));

                return(value);
            }

            return(null);
        }