Beispiel #1
0
        internal void OnSourcePropertyChanged(object o, string propName)
        {
            int level;

            // ignore changes that don't affect this binding.
            // This test must come before any marshalling to the right context (bug 892484)
            if (!IgnoreSourcePropertyChange && (level = PW.LevelForPropertyChange(o, propName)) >= 0)
            {
                // if notification was on the right thread, just do the work (normal case)
                if (Dispatcher.Thread == Thread.CurrentThread)
                {
                    PW.OnPropertyChangedAtLevel(level);
                }
                else
                {
                    // otherwise invoke an operation to do the work on the right context
                    SetTransferIsPending(true);

                    if (ParentBindingExpression.TargetWantsCrossThreadNotifications)
                    {
                        LiveShapingItem lsi = TargetElement as LiveShapingItem;
                        if (lsi != null)
                        {
                            lsi.OnCrossThreadPropertyChange(TargetProperty);
                        }
                    }

                    Engine.Marshal(
                        new DispatcherOperationCallback(ScheduleTransferOperation),
                        null);
                }
            }
        }
Beispiel #2
0
        // Token: 0x0600747F RID: 29823 RVA: 0x00215570 File Offset: 0x00213770
        internal void OnSourcePropertyChanged(object o, string propName)
        {
            int level;

            if (!base.IgnoreSourcePropertyChange && (level = this.PW.LevelForPropertyChange(o, propName)) >= 0)
            {
                if (base.Dispatcher.Thread == Thread.CurrentThread)
                {
                    this.PW.OnPropertyChangedAtLevel(level);
                    return;
                }
                base.SetTransferIsPending(true);
                if (base.ParentBindingExpression.TargetWantsCrossThreadNotifications)
                {
                    LiveShapingItem liveShapingItem = base.TargetElement as LiveShapingItem;
                    if (liveShapingItem != null)
                    {
                        liveShapingItem.OnCrossThreadPropertyChange(base.TargetProperty);
                    }
                }
                base.Engine.Marshal(new DispatcherOperationCallback(this.ScheduleTransferOperation), null, 1);
            }
        }