Exemplo n.º 1
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public virtual void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            Log.Debug("DataContext of TargetControl '{0}' has changed to '{1}'", TargetControl.GetType().Name, ObjectToStringHelper.ToTypeString(TargetControl.DataContext));

            var dataContext = TargetControl.DataContext;

            if (dataContext == null)
            {
                return;
            }

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (ViewModel == dataContext)
            {
                return;
            }

            if (dataContext.GetType().IsAssignableFromEx(ViewModelType))
            {
                // Use the view model from the data context, probably set manually
                ViewModel = (IViewModel)dataContext;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public override void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            // Fix in WinRT to make sure inner grid is created
            if (_viewModelGrid == null)
            {
                if (TargetControl.Content != null)
                {
                    TargetControl.UnsubscribeFromDependencyProperty("Content", OnTargetControlContentChanged);

                    CreateViewModelGrid();
                }
                else
                {
                    Log.Error("Content of control '{0}' is not yet loaded, but the DataContext has changed. The control will bind directly to the DataContext instead of the view model", TargetControl.GetType().FullName);
                }
            }

            base.OnTargetControlDataContextChanged(sender, e);

            var oldDataContext = e.OldValue;
            var dataContext    = e.NewValue;

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (oldDataContext != null)
            {
                ClearWarningsAndErrorsForObject(oldDataContext);
            }

            UpdateDataContextToUseViewModel(dataContext);
        }
 /// <summary>
 /// Invoked whenever the effective value of any dependency property on this <see cref="T:System.Windows.FrameworkElement"/> has been updated. The specific dependency property that changed is reported in the arguments parameter. Overrides <see cref="M:System.Windows.DependencyObject.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs)"/>.
 /// </summary>
 /// <param name="e">The event data that describes the property that changed, as well as old and new values.</param>
 private void OnDependencyPropertyChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     if (PropertyChanged != null)
     {
         PropertyChanged(this, new PropertyChangedEventArgs(e.PropertyName));
     }
 }
Exemplo n.º 4
0
 private void OnTextChanged(object sender, DependencyPropertyValueChangedEventArgs args)
 {
     if (_watermarkContent != null)
     {
         _watermarkContent.Opacity = !string.IsNullOrEmpty(Text) ? 0.0 : 0.5;
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Called when a property on the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
        private void OnTargetControlPropertyChangedInternal(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            if (!((FrameworkElement)sender).IsRealDependencyProperty(e.PropertyName))
            {
                // Ignore, this is a wrapper
                return;
            }

            //Log.Debug("Property '{0}' of TargetControl '{1}' has changed", e.PropertyName, TargetControl.GetType().Name);

            if (string.Equals(e.PropertyName, "DataContext", StringComparison.OrdinalIgnoreCase))
            {
                OnTargetControlDataContextChanged(sender, e);
            }

            OnTargetControlPropertyChanged(sender, e);
        }
Exemplo n.º 6
0
        private void OnTextChanged(object sender, DependencyPropertyValueChangedEventArgs args)
        {
            if (_watermarkContent != null)
            {
                _watermarkContent.Opacity = !string.IsNullOrEmpty(Text) ? 0.0 : 0.5;
            }

            if (_watermarkInlineContent != null)
            {
                _watermarkInlineContent.Opacity = !string.IsNullOrEmpty(Text) ? 0.5 : 0.0;
            }
            //var text = Text ?? string.Empty;
            //if (_watermarkInlineContentBorder != null)
            //{
            //    var rect = GetRectFromCharacterIndex(text.Length);
            //    _watermarkInlineContentBorder.RenderTransform = new TranslateTransform { X = rect.X - 12.0, Y = rect.Y - rect.Height / 2.0 - 8.0 };
            //}
        }
Exemplo n.º 7
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public override void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            // Fix in WinRT to make sure inner grid is created
            if (_viewModelGrid == null)
            {
                if (TargetControl.Content != null)
                {
                    CreateViewModelGrid();
                }
                else
                {
                    Log.Error("Content of control '{0}' is not yet loaded, but the DataContext has changed. The control will bind directly to the DataContext instead of the view model", TargetControl.GetType().FullName);
                }
            }

            // Fix for CTL-307: DataContextChanged is invoked before Unloaded because Parent is set to null
            var targetControlParent = TargetControl.Parent;

            if (targetControlParent == null)
            {
                return;
            }

            base.OnTargetControlDataContextChanged(sender, e);

            var oldDataContext = e.OldValue;
            var dataContext    = e.NewValue;

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (oldDataContext != null)
            {
                ClearWarningsAndErrorsForObject(oldDataContext);
            }

            if (!IsUnloading)
            {
                UpdateDataContextToUseViewModel(dataContext);
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Called when the associated dependency property has changed.
        /// </summary>
        private void OnDependencyPropertyChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            if (UpdateDelay < 50)
            {
                UpdateBinding();
                return;
            }

            if (UpdateDelay > 5000)
            {
                UpdateDelay = 5000;
            }

            if (_timer.IsEnabled)
            {
                _timer.Stop();
            }

            _timer.Interval = new TimeSpan(0, 0, 0, 0, UpdateDelay);
            _timer.Start();
        }
Exemplo n.º 9
0
        private static void OnMarginChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            if (!(sender is FrameworkElement frameworkElement))
            {
                return;
            }

            frameworkElement.UnsubscribeFromDependencyProperty(nameof(FrameworkElement.Margin), OnMarginChanged);

            var currentMargin = (Thickness)e.NewValue;

            var left   = GetLeft(frameworkElement);
            var top    = GetTop(frameworkElement);
            var right  = GetRight(frameworkElement);
            var bottom = GetBottom(frameworkElement);

            left   = double.IsNaN(left) ? currentMargin.Left : left;
            top    = double.IsNaN(top) ? currentMargin.Top : top;
            right  = double.IsNaN(right) ? currentMargin.Right : right;
            bottom = double.IsNaN(bottom) ? currentMargin.Bottom : bottom;

            frameworkElement.Margin = new Thickness(left, top, right, bottom);
        }
 private void OnDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue));
 }
Exemplo n.º 11
0
 /// <summary>
 /// Called when a dependency property on this control has changed.
 /// </summary>
 /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 protected virtual void OnPropertyChanged(DependencyPropertyValueChangedEventArgs e)
 {
 }
Exemplo n.º 12
0
 /// <summary>
 /// Called when a dependency property on this control has changed.
 /// </summary>
 /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 protected virtual void OnPropertyChanged(DependencyPropertyValueChangedEventArgs e)
 {
 }
Exemplo n.º 13
0
 private void OnSelectedItemChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     UpdateItems();
 }
Exemplo n.º 14
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public override void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            // Fix in WinRT to make sure inner grid is created
            if (_viewModelGrid == null)
            {
                if (TargetControl.Content != null)
                {
                    TargetControl.UnsubscribeFromDependencyProperty("Content", OnTargetControlContentChanged);

                    CreateViewModelGrid();
                }
                else
                {
                    Log.Error("Content of control '{0}' is not yet loaded, but the DataContext has changed. The control will bind directly to the DataContext instead of the view model", TargetControl.GetType().FullName);
                }
            }

            base.OnTargetControlDataContextChanged(sender, e);

            var oldDataContext = e.OldValue;
            var dataContext = e.NewValue;

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (oldDataContext != null)
            {
                ClearWarningsAndErrorsForObject(oldDataContext);
            }

            UpdateDataContextToUseViewModel(dataContext);
        }
Exemplo n.º 15
0
 /// <summary>
 /// Called when a property on the <see cref="TargetControl"/> has changed.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 public virtual void OnTargetControlPropertyChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     TargetControlPropertyChanged.SafeInvoke(this, e);
 }
Exemplo n.º 16
0
 /// <summary>
 /// Called when the content of the target control has changed.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="Catel.Windows.Data.DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 private void OnTargetControlContentChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     CreateViewModelGrid();
 }
Exemplo n.º 17
0
 private void OnItemsSourceChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     UnsubscribeFromCollection();
     SubscribeToCollection();
 }
Exemplo n.º 18
0
 /// <summary>
 /// Called when a property on the <see cref="LogicBase.TargetControl"/> has changed.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
 private void OnLogicTargetControlPropertyChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     TargetControlPropertyChanged.SafeInvoke(this, e);
 }
Exemplo n.º 19
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public virtual void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            Log.Debug("DataContext of TargetControl '{0}' has changed to '{1}'", TargetControl.GetType().Name, ObjectToStringHelper.ToTypeString(TargetControl.DataContext));

            var dataContext = TargetControl.DataContext;

            if (dataContext == null)
            {
                return;
            }

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (ViewModel == dataContext)
            {
                return;
            }

            if (dataContext.GetType().IsAssignableFromEx(ViewModelType))
            {
                // Use the view model from the data context, probably set manually
                ViewModel = (IViewModel)dataContext;
            }
        }
Exemplo n.º 20
0
        /// <summary>
        /// Called when the content of the target control has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="Catel.Windows.Data.DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
        private void OnTargetControlContentChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            TargetControl.UnsubscribeFromDependencyProperty("Content", OnTargetControlContentChanged);

            CreateViewModelGrid();
        }
Exemplo n.º 21
0
 /// <summary>
 /// Called when a property on the <see cref="TargetControl"/> has changed.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 public virtual void OnTargetControlPropertyChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     TargetControlPropertyChanged.SafeInvoke(this, e);
 }
Exemplo n.º 22
0
 private void OnSelectedItemChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     UpdateItems();
 }
Exemplo n.º 23
0
 private void OnPaddingChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     UpdateWaterMarkMargin();
 }
Exemplo n.º 24
0
        private void OnRenderingProgramChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            var canvas = sender as CustomizedCanvas;

            canvas?.Invalidate();
        }
Exemplo n.º 25
0
        /// <summary>
        /// Called when the <c>DataContext</c> property of the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        public override void OnTargetControlDataContextChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            // Fix in WinRT to make sure inner grid is created
            if (_viewModelGrid == null)
            {
                if (TargetControl.Content != null)
                {
                    CreateViewModelGrid();
                }
                else
                {
                    Log.Error("Content of control '{0}' is not yet loaded, but the DataContext has changed. The control will bind directly to the DataContext instead of the view model", TargetControl.GetType().FullName);
                }
            }

            // Fix for CTL-307: DataContextChanged is invoked before Unloaded because Parent is set to null
            var targetControlParent = TargetControl.Parent;
            if (targetControlParent == null)
            {
                return;
            }

            base.OnTargetControlDataContextChanged(sender, e);

            var oldDataContext = e.OldValue;
            var dataContext = e.NewValue;

            if (BindingHelper.IsSentinelObject(dataContext))
            {
                return;
            }

            if (oldDataContext != null)
            {
                ClearWarningsAndErrorsForObject(oldDataContext);
            }

            if (!IsUnloading)
            {
                UpdateDataContextToUseViewModel(dataContext);
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// Called when the content of the target control has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="Catel.Windows.Data.DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
        private void OnTargetControlContentChanged(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            TargetControl.UnsubscribeFromDependencyProperty("Content", OnTargetControlContentChanged);

            CreateViewModelGrid();
        }
Exemplo n.º 27
0
 /// <summary>
 /// Called when the content of the target control has changed.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="Catel.Windows.Data.DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
 private void OnTargetControlContentChanged(object sender, DependencyPropertyValueChangedEventArgs e)
 {
     CreateViewModelGrid();
 }
Exemplo n.º 28
0
        /// <summary>
        /// Called when a property on the <see cref="TargetControl"/> has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DependencyPropertyValueChangedEventArgs"/> instance containing the event data.</param>
        private void OnTargetControlPropertyChangedInternal(object sender, DependencyPropertyValueChangedEventArgs e)
        {
            if (!((FrameworkElement)sender).IsRealDependencyProperty(e.PropertyName))
            {
                // Ignore, this is a wrapper
                return;
            }

            //Log.Debug("Property '{0}' of TargetControl '{1}' has changed", e.PropertyName, TargetControl.GetType().Name);

            if (string.Equals(e.PropertyName, "DataContext", StringComparison.OrdinalIgnoreCase))
            {
                OnTargetControlDataContextChanged(sender, e);
            }

            OnTargetControlPropertyChanged(sender, e);
        }