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);
    }
  • 相关阅读:
    What is Continuous Integration?
    10 Essential TypeScript Tips And Tricks For Angular Devs
    javascript 的事件绑定和取消事件
    Directive Controller And Link Timing In AngularJS
    做事情的态度——做精做细
    How to simplify a PHP code with the help of the façade pattern?
    Can we say objects have attributes, states and behaviors?
    represent states with objects
    【转】一次是不算数的
    nyoj27-水池数目 (求连通块数目)【dfs】
  • 原文地址:https://www.cnblogs.com/otomii/p/2034500.html
Copyright © 2011-2022 走看看