2013-02-16 10 views
0

에 내가 UserControl을 만들어이 같은 새 속성이 추가되었습니다 :
를 사용하여 속성 UserControl을

public partial class MyControl : UserControl 
{ 
    public static readonly DependencyProperty SelectedBrushProperty; 
    static MyControl() { 
     SelectedBrushProperty = DependencyProperty.Register("SelectedBrush", 
                  typeof(Brush), 
                  typeof(MyControl), 
                  new PropertyMetadata(Brushes.AliceBlue)); 
    } 

    public Brush SelectedBrush { 
     get { 
      return (Brush)GetValue(SelectedBrushProperty); 
     } 
     set { 
      SetValue(SelectedBrushProperty,value); 
     } 
    } 
    public MyControl() 
    { 
     InitializeComponent(); 
    } 
} 

내 질문은 : 내 사용자 정의 컨트롤의 XAML에서, 내가 그것을 어떻게 사용할 수있는 경우를?

+1

'<지역 : MyControl SelectedBrush = "화이트"/>'.. 당신은 귀하의 질문에 조금 확장 할 수 없습니다 당신이 여기 후 무엇을해야합니다 ... 당신이 쓸 수? – Default

답변

2

당신은 당신의 컨트롤의 XAML에서 속성에 바인딩 할 수 있습니다

<Label Background="{Binding SelectedBrush}"/> 

: 당신이 MyControl의 생성자에서 DataContext = this;을 설정하면

<UserControl x:Class="MyNamespace.MyControl" ...> 
    <Grid> 
     <Label Background="{Binding SelectedBrush, 
      RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/> 
    </Grid> 
</UserControl> 

, 당신은 바인딩의 RelativeSource을 생략 할 수 있습니다

정적 생성자가 필요 없음을 유의하십시오.

public static readonly DependencyProperty SelectedBrushProperty = 
    DependencyProperty.Register("SelectedBrush", typeof(Brush), typeof(MyControl), 
           new PropertyMetadata(Brushes.AliceBlue)); 
+0

완벽하고 정확하게 내가 뭘 찾고 있었습니까! – Groulien

+0

와우, 나는 그 질문에서 그걸 선택했다고 감명 받았습니다. BTW,'AncestorType'은'MyControl'이 아니어야합니다. 그래서 어떤 UserControl도 발견되지 않았습니까? – Default

+0

@Default The AncestorType은'local : MyControl' 일 수도 있지만'xmlns : local = "clr-namespace : MyNamespace"와 같은 또 다른 XML 네임 스페이스 선언이 필요합니다. 조상 계층에 다른 UserControl이 없으므로 불필요하다고 생각됩니다. – Clemens