2012-06-08 2 views
1

나는 사각형 같은 것을 가지고 그것의 ID를 검색 할 수 있습니다 I 캔버스에 떨어졌다 때 그래서 나중에에게 ID를 할당 내가 좋아하는사용자 지정 속성을 만드는 방법은 무엇입니까?

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

사용하지 않고 의미 사용자 정의 속성을 작성해야합니다.

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

어떻게 사용자 정의 속성을 정의 할 수 있습니까?

감사합니다, 미트

+0

사각형과 같은 다른 클래스를 정의하고 속성을 정의 하시겠습니까? –

+0

'Tag' 속성을 사용하거나 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 에서처럼) 오류가 발생합니다. ** 속성 'Property'의 값을 'System.Windows.DependencyProperty'유형의 객체로 변환 할 수 없습니다. . ** –

관련 문제