2012-06-08 152 views
1

我需要创建一个自定义属性的意思,而使用如何创建自定义属性?

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

我喜欢有类似矩形,并为其分配一个ID,这样后,当它被丢弃在画布上我可以检索其ID。

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

如何定义自定义属性?

问候, 阿米特

+0

你想定义另一个类像矩形,然后定义一个属性吗? –

+0

使用'标记'属性或看看http://stackoverflow.com/questions/3940597/how-to-create-a-dependency-property-on-an-existing-control –

回答

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。

+0

嗨Fmunkert,这是一个很好的例子,所以我跟着所有的步骤,但我想我在这里失踪的原因,当我运行它我得到一个错误(在XAML中)**不能将属性'属性'中的值转换为类型'System.Windows.DependencyProperty' 。 ** –

相关问题