Other/Translator/VisualHelper.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;

namespace Translator
{
    public static class VisualHelper
    {
        public static TP GetParent<TP>(DependencyObject child, int i) where TP : DependencyObject
        {
            var parent = VisualTreeHelper.GetParent(child);
            var logicalParent = LogicalTreeHelper.GetParent(child);

            if (logicalParent is TP)
                return logicalParent as TP;

            if (i > 4 || parent == null || parent is TP)
                return parent as TP;

            return GetParent<TP>(parent, i + 1);
        }

        public static TP GetParent<TP>(DependencyObject child, Type stopWhen) where TP : Visual
        {
            var parent = VisualTreeHelper.GetParent(child);
            var logicalParent = LogicalTreeHelper.GetParent(child);

            if (logicalParent is TP)
                return logicalParent as TP;

            if (parent is TP)
                return parent as TP;

            if (parent == null || parent.GetType() == stopWhen)
                return null;

            return GetParent<TP>(parent, stopWhen);
        }

        public static T GetVisualChild<T>(Visual parent) where T : Visual
        {
            var child = default(T);
            var numVisuals = VisualTreeHelper.GetChildrenCount(parent);

            for (var i = 0; i < numVisuals; i++)
            {
                var v = (Visual)VisualTreeHelper.GetChild(parent, i);

                child = v as T ?? GetVisualChild<T>(v);

                if (child != null)
                    break;
            }

            return child;
        }

        public static T DeepCopy<T>(UIElement source) where T : new()
后面还有 23 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。