Example #1
0
        static void ButtonDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var element = sender as FrameworkElement;

            if (element == null)
            {
                return;
            }

            var jumpSupportData = GetJumpSupportData(element);
            var methodPool      = GetMethodPool(element);

            var target = WPFOperate.GetChild <FrameworkElement>(element, jumpSupportData.TargetName);

            if (target == null)
            {
                return;
            }
            Type type = methodPool.GetType();

            MethodInfo info   = type.GetMethod(jumpSupportData.MethodName);
            object     result = null;

            if (jumpSupportData.ArgCount > 1)
            {
                var context2 = GetDataContextSource2(element);
                result = info.Invoke(methodPool, new[] { element.DataContext, context2 });
            }

            else
            {
                result = info.Invoke(methodPool, new[] { element.DataContext });
            }

            PropertyInfo propertyInfo = target.GetType().GetProperty(jumpSupportData.TargetProperty);

            propertyInfo.SetValue(target, result, new object[] { });
        }
Example #2
0
        private static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            bool oldIsEnabled = (bool)e.OldValue;
            bool newIsEnabled = (bool)d.GetValue(IsEnabledProperty);

            var itemsControl = d as ItemsControl;

            if (itemsControl == null)
            {
                return;
            }

            if (newIsEnabled)
            {
                itemsControl.Loaded += (ss, ee) =>
                {
                    ScrollViewer scrollviewer = WPFOperate.GetChild <ScrollViewer>(itemsControl);
                    if (scrollviewer != null)
                    {
                        ((ICollectionView)itemsControl.Items).CollectionChanged += (sss, eee) => scrollviewer.ScrollToEnd();
                    }
                };
            }
        }