WPF QuickStart系列之附加属性(Attached Property)
2021-05-14 08:27
标签:system window media 这一 mat soft 控件 quick ima 这一篇博客是关于如何使用附加属性和创建自定义附加属性的。 1. 附加属性使用, WPF中对附加属性使用最多的莫过于对控件布局时设置控件的位置,例如在Canvas中有一个Rectangle, Ellipse, Button,我们需要设置它们的位置, 除了在XAML中设置依赖属性外,也可以在C#代码中设置,例如: 显示效果: 附加属性使用起来非常简单。 2. 自定义附加属性 现在有这样一个需求,需要将上面的Button,Ellipse,Rectangle旋转一定角度。我们可以这样来实现: XAML: 效果如下: 细心的你已经发现上面的三段代码基本一样,而且还挺长的。我们可以使用附加属性来实现,新建一个RotationHelper类,代码如下: 将RotationHelper类继承DependencyObject,这样不光Button,Ellipse,可以使用,其他继承自DependencyObject的元素均可使用。 现在在XAML中使用自定义Angle附加属性。 此时显示效果和上面通过XAML中使用RenderTransform一样。 感谢您的阅读。代码点击这里下载。 PS:目前在工作中, 1. 给TextBox和PasswordBox设置水印文字时,使用到自定义附加属性,示例代码下载; 2. 在WPF MVVM模式下,需要直接绑定PasswordBox的Password属性时是不可以的,因为Password属性不是依赖属性,此时使用自定义附加属性解决了这个问题。示例代码下载。 WPF QuickStart系列之附加属性(Attached Property) 标签:system window media 这一 mat soft 控件 quick ima 原文地址:http://www.cnblogs.com/wangchaoyuana/p/7523566.html
Canvas.SetLeft(_rect, 100);
Canvas.SetTop(_rect, 50);
using System.Windows;
using System.Windows.Media;
namespace UseAttachedProperty.Helper
{
public class RotationHelper : DependencyObject
{
public static double GetAngle(DependencyObject obj)
{
return (double)obj.GetValue(AngleProperty);
}
public static void SetAngle(DependencyObject obj, double value)
{
obj.SetValue(AngleProperty, value);
}
public static readonly DependencyProperty AngleProperty =
DependencyProperty.RegisterAttached("AngleProperty", typeof(double), typeof(RotationHelper),
new PropertyMetadata(0.0,OnAngleChanged));
private static void OnAngleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
UIElement element = d as UIElement;
if(element != null)
{
element.RenderTransformOrigin = new Point(0.5, 0.5);
element.RenderTransform = new RotateTransform((double)e.NewValue);
}
}
}
}
上一篇:WPF 定义Command
下一篇:win10 安装YII2
文章标题:WPF QuickStart系列之附加属性(Attached Property)
文章链接:http://soscw.com/index.php/essay/85526.html