【WPF】附加属性

摘要:
我对其他属性的理解一直很模糊。我今天读了一篇文章,突然意识到。我使用演示来隐藏我对其他属性的理解。简单的理解是为对象定义一个属性,使其具有并使用该属性。最典型的是网格。行和画布顶部应用程序1.定义空间矩形并将其旋转30度˂RectangleFill=“Red”Width=“100”Height=“60”RenderTransformOr

一直都对附加属性理解很模糊,今天看了一篇文章,恍然大悟,用个Demo掩饰一下对附加属性的理解

附加属性,简单的理解就是给一个对象外在的定义一个属性,使得该对象拥有和使用该属性,最典型的是Grid.Row和Canvas.Top的应用

1、定义一个空间Rectangle,并且使之旋转30度

        <Rectangle Fill="Red" Width="100" Height="60" RenderTransformOrigin=".5,.5">
            <Rectangle.RenderTransform>
                <RotateTransform Angle="30" />
            </Rectangle.RenderTransform>
        </Rectangle>

2、如果我们有很多控件都需要进行旋转的操作,代码很显得很长很臃肿,这个时候附加属性就派上用场了,我们让Rectangle拥有一个属性Angle,然后控件可以根据Angle属性的值控制旋转的角度

        <Rectangle Fill="Red" Width="100" Height="60" RenderTransformOrigin=".5,.5" local:RotationManager.Angle="30" />

  这样的话就代码就显得更短更清晰了

3、下面定义附加属性,附加属性通过外部类 RotationManager 来定义

    /// <summary>
    /// 旋转控制器
    /// </summary>
    public class RotationManager : DependencyObject
    {
        //附加属性取值
        public static double GetAngle(DependencyObject obj)
        {
            return (double) obj.GetValue(AngleProperty);
        }

        //附加属性赋值
        public static void SetAngle(DependencyObject obj, double value)
        {
            obj.SetValue(AngleProperty, value);
        }

        //注册附加属性,与依赖属性的区别:RegisterAttached
        public static readonly DependencyProperty AngleProperty =
            DependencyProperty.RegisterAttached("Angle", typeof (double), typeof (RotationManager),
                new PropertyMetadata(0.0, OnAngleChanged));

        private static void OnAngleChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            //这里控制旋转
            var element = obj as FrameworkElement;
            if (element != null)
            {
                element.RenderTransform = new RotateTransform((double)e.NewValue);
            }
        }       
    }

参考: http://www.cnblogs.com/DebugLZQ/p/3153098.html

免责声明:文章转载自《【WPF】附加属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇视频技术详解:语音编解码技术演进和应用选型使用Xftp&amp;amp;Xshell 工具进行文件上传与运行webapi下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF属性绑定实现双向变化

  WPF依赖项属性可以实现属性的绑定,成功绑定之后只要修改后台绑定的属性,即可UI同步自动更新绑定的值,无需手动刷新界面;同样,前台的值变化后,通过获取绑定的属性值也可获取UI变化后的值,实现双向变化的效果。属性绑定使得UI更新非常的方便,下面分享一个小栗子说明使用的方式。 1、先做了一个有一个TextBlock和一个Button的UI,想要实现点击后T...

WPF元素可视化效果

在WPF中设置元素的可视化效果主要用到BlurEffect类和DropShadowEffect类。(目前只学到这两个,哈哈) 1.BlurEffect类 命名空间: System.Windows.Media.Effects. BlurEffect 使目标纹理模糊的位图效果。 程序集:PresentationCore(在 PresentationCore.d...

WPF实现3D翻转的动画效果

1、前端代码实现 1.1 原理见代码注析 <Grid MouseDown="Grid_MouseDown"> <Viewport3D> <Viewport3D.Camera> <!-- Position属性指定3D空间中摄像机的位置,LookDirection属性为摄...

WPF程序性能优化总结

原文链接:https://blog.csdn.net/u010265681/article/details/77571947 WPF程序性能由很多因素造成,以下是简单地总结: 元素: 1、 减少需要显示的元素数量:去除不需要或者冗余的XAML元素代码. 通过移出不必要的元素,合并layout panels,简化templates来减少可视化树的层次。这可以...

WPF中RadioButton绑定数据的正确方法

RadioButton一般用于单选的时候,也就是从一组值中选择一个值。 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女。 这种时候一般就会用到RadioButton。 RadioButton有一个IsChecked属性用于表示是否选中,IsChecked属性的值类型是bool,只能直接绑定bool类型的值。 然而对...

WPF_界面_图片/界面/文字模糊解决之道整理

图片模糊: 图片尺寸: 检查图片,png, DPI=72,Stretch="None",原图尺寸和xaml里面写的尺寸一致。如果替换为大尺寸的原图,使用时,size写的小一点,同比例缩小,没问题。 布局复杂程度: 把图片拷贝到空白的项目里面,发现有的图片模糊,有的不模糊。布局复杂一点,模糊的概率大。改变项目中的xaml 布局,神奇的出现了,左右两个边清晰了...