common/FrameworkExtension.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Media;
using System.Linq;
namespace tablegen2
{
internal static class FrameworkExtension
{
public static Vector GetOffsetFromRelativeParent(this FrameworkElement e, FrameworkElement p)
{
p.UpdateLayout();
var r = new Vector(0, 0);
var t = e;
while (t != p)
{
if (t == null)
throw new Exception("GetOffsetFromRelativeParent 异常!");
var v = VisualTreeHelper.GetOffset(t);
r += v;
t = VisualTreeHelper.GetParent(t) as FrameworkElement;
}
return r;
}
public static void MakesureChildVisible(this ScrollViewer sv, FrameworkElement child)
{
if (child == null)
return;
var reserve = 20;
var p = child.GetOffsetFromRelativeParent(sv);
p.X += sv.HorizontalOffset;
p.Y += sv.VerticalOffset;
if (sv.HorizontalScrollBarVisibility != ScrollBarVisibility.Disabled)
{
var x1 = p.X - reserve;
var x2 = p.X + child.ActualWidth + reserve;
var offsetx = sv.HorizontalOffset;
var width = sv.ActualWidth;
if (x1 < offsetx)
offsetx = x1;
else if (offsetx + width < x2)
offsetx = x2 - width;
sv.ScrollToHorizontalOffset(offsetx);
}
if (sv.VerticalScrollBarVisibility != ScrollBarVisibility.Disabled)
{
var y1 = p.Y - reserve;
var y2 = p.Y + child.ActualHeight + reserve;
var offsety = sv.VerticalOffset;
var height = sv.ActualHeight;
if (y1 < offsety)
后面还有 13 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。