我试图在Windows运行时中找到相当于
ClipToBounds的内容.
如果它不存在有没有办法重新创建这种行为?
如果它不存在有没有办法重新创建这种行为?
这是我使用的解决方案:
public class Clip { public static bool GetToBounds(DependencyObject depObj) { return (bool)depObj.GetValue(ToBoundsProperty); } public static void SetToBounds(DependencyObject depObj,bool clipToBounds) { depObj.SetValue(ToBoundsProperty,clipToBounds); } /// <summary> /// Identifies the ToBounds Dependency Property. /// <summary> public static readonly DependencyProperty ToBoundsProperty = DependencyProperty.RegisterAttached("ToBounds",typeof(bool),typeof(Clip),new PropertyMetadata(false,OnToBoundsPropertyChanged)); private static void OnToBoundsPropertyChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) { FrameworkElement fe = d as FrameworkElement; if (fe != null) { ClipToBounds(fe); // whenever the element which this property is attached to is loaded // or re-sizes,we need to update its clipping geometry fe.Loaded += new RoutedEventHandler(fe_Loaded); fe.SizeChanged += new SizeChangedEventHandler(fe_SizeChanged); } } /// <summary> /// Creates a rectangular clipping geometry which matches the geometry of the /// passed element /// </summary> private static void ClipToBounds(FrameworkElement fe) { if (GetToBounds(fe)) { fe.Clip = new RectangleGeometry() { Rect = new Rect(0,fe.ActualWidth,fe.ActualHeight) }; } else { fe.Clip = null; } } static void fe_SizeChanged(object sender,SizeChangedEventArgs e) { ClipToBounds(sender as FrameworkElement); } static void fe_Loaded(object sender,RoutedEventArgs e) { ClipToBounds(sender as FrameworkElement); } }
找到它here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。