如何创建自定义属性?

时间:2012-06-08 18:54:28

标签: c# wpf xaml

我需要创建一个自定义属性,而不是使用

<Style x:Key="ABC" TargetType="Rectangle">
    <Setter Property="Fill" Value="Red"/>
</Style>

我喜欢使用像Rectangle这样的东西,并为它分配一个ID,以便稍后在Canvas上删除它时我可以检索它的ID。

<Style x:Key="ABC" TargetType="Rectangle">
    <Setter Property="Fill" Value="Red"/>
    **<Setter Property="ID" Value="1234567890-ABC"/>**
</Style>

如何定义该自定义属性?

此致 阿米特

1 个答案:

答案 0 :(得分:4)

在单独的类中定义自定义附加属性:

public class Prop : DependencyObject
{
    public static readonly DependencyProperty IDProperty =
        DependencyProperty.RegisterAttached("ID", typeof(string), typeof(Prop), new PropertyMetadata(null));

    public static void SetID(UIElement element, string value)
    {
        element.SetValue(IDProperty, value);
    }

    public static string GetID(UIElement element)
    {
        return (string)element.GetValue(IDProperty);
    }
}

然后你可以使用它:

<Setter Property="local:Prop.ID" Value="1234567890-ABC"/>

local必须在XAML的根元素中定义,大概如下:

xmlns:local="clr-namespace:AttPropTest"

其中AttPropTest是程序集的命名空间。

在代码中,您可以使用Prop.GetID(myRect)确定ID。