zoukankan      html  css  js  c++  java
  • WP7备注(29)(Attached Properties|CanvasClone)

    首先,Canvas是一个Attached Properties的代表控件,对于Canvas,四个坐标都是Attached Properties,所以进行Canvas的内置机制的Clone,可以让我们更好的了解

    首先声明属性

    public static readonly DependencyProperty LeftProperty =
    DependencyProperty.RegisterAttached("Left",
    typeof(double),
    typeof(CanvasClone),
    new PropertyMetadata(0.0, OnLeftOrTopPropertyChanged));
    public static readonly DependencyProperty TopProperty =
    DependencyProperty.RegisterAttached("Top",
    typeof(double),
    typeof(CanvasClone),
    new PropertyMetadata(0.0, OnLeftOrTopPropertyChanged));

    Get,Set

    public static void SetLeft(DependencyObject obj, double value)
    {
    obj.SetValue(LeftProperty, value);
    }
    public static double GetLeft(DependencyObject obj)
    {
    return (double)obj.GetValue(LeftProperty);
    }
    public static void SetTop(DependencyObject obj, double value)
    {
    obj.SetValue(TopProperty, value);
    }
    public static double GetTop(DependencyObject obj)
    {
    return (double)obj.GetValue(TopProperty);
    }

    重新安排所有子控件的位置:

    static void OnLeftOrTopPropertyChanged(DependencyObject obj,
    DependencyPropertyChangedEventArgs args)
    {
    CanvasClone parent = VisualTreeHelper.GetParent(obj) as CanvasClone;
    if (parent != null)
    parent.InvalidateArrange();
    }

    MeasureOverride:

    protected override Size MeasureOverride(Size availableSize)
    {
    foreach (UIElement child in Children)
    child.Measure(new Size(Double.PositiveInfinity,
    Double.PositiveInfinity));
    return Size.Empty;
    }

    ArrangeOverride:

    protected override Size ArrangeOverride(Size finalSize)
    {
    foreach (UIElement child in Children)
    child.Arrange(new Rect(
    new Point(GetLeft(child), GetTop(child)), child.DesiredSize));
    return base.ArrangeOverride(finalSize);
    }
  • 相关阅读:
    程序员的九重境界,你是第几重?
    一个常用的正则表达验证类(转载)
    学习程序设计的态度
    科技期刊学术不端文献检测系统(转载)
    用GridView设计固定行数的入库单报表
    JavaScript技巧集
    线程的概念
    java实验三 类的继承与多态
    常见的网络攻击手段及防御方法
    类和对象的概念(转载)
  • 原文地址:https://www.cnblogs.com/otomii/p/2034500.html
Copyright © 2011-2022 走看看