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);
    }
  • 相关阅读:
    通过JDBC连接hive
    大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
    lightning mdb 源代码分析(5)-事务控制
    lightning mdb 源代码分析(4)—MVCC/COW
    lightning mdb 源代码分析(1)
    lightning mdb 源代码分析(2)
    Ubuntu 15.10安装elementary desktop
    lightning mdb 源代码分析系列(3)
    async和enterproxy控制并发数量
    Express4.x API (一):application (译)
  • 原文地址:https://www.cnblogs.com/otomii/p/2034500.html
Copyright © 2011-2022 走看看