2012-05-23 3 views
0

속성을 통해 사용하기 쉬운 UserControl 만들기, 내 ​​응용 프로그램에서 소비되는 간단한 UserControl을 만들려고합니다. 일을 단순하게 유지하기 위해, "헤더"와 자리 표시자를 가져야합니다. 여기서 어떤 종류의 컨트롤을 배치하고 싶습니다. 내 응용 프로그램에서 컨트롤을 사용할 때 코드에서 내 Silverlight 4 응용 프로그램에서

<User Control ...> 
    <Grid x:Name="LayoutRoot"> 
    <TextBlock x:Name="TextBlockHeader" Text="{Binding Title}" /> 
    <ContentPresenter x:Name="ContentPresenterObject" /> 
    </Grid> 
</UserControl> 

뒤에, 나는 TextBlock의

public string Title 
{ 
    get { return (string)GetValue(TitleProperty); } 
    set { SetValue(TitleProperty, value); } 
} 

public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(MyAccordion), null); 

이 방법의 텍스트 속성을 만들었습니다, 나는 제목 속성을 설정할 수 있습니다.

<local:MyAccordion Title="Test"/> 

그러나이 = TextBlock의 텍스트에서 바인딩 것으로 보인다 "는 {제목 바인딩}"텍스트 "테스트"는 textblocks 텍스트로 표시 할 수 있도록하지 않습니다.

내 질문은 : 속성 제목을 텍스트 상자 텍스트로 표시하려면 어떻게해야합니까? 모든 유형의 사용자 정의 컨트롤 - contencontrol에 대해 어떻게해야합니까? 사전에

감사합니다,
프랭크

답변

0

대답은 ElementPropertyBinding입니다. 바인딩에서 사용자 정의 컨트롤을 참조하거나 생성자에서 바인딩을 추가해야합니다.

<User Control ... x:Name="userControl"> 
    ... 
    <TextBlock x:Name="TextBlockHeader" Text="{Binding Title, ElementName=userControl}" /> 
</UserControl> 

public MyUserControl() 
{ 
    // Required to initialize variables 
    InitializeComponent(); 

    TextBlockHeader.SetBinding(TextBlock.TextProperty, new System.Windows.Data.Binding() { Source = this, Path = new PropertyPath("Title") }); 
} 

나는 아직 자식 컨트롤을 추가하는 방법을 찾을 필요가 (코드 뒤에) 생성자에서 바인딩 만들기 :

는 XAML에서 바인딩 만들기 ,하지만 그것은 또 다른 질문입니다.

0

아마 DataContext를 제어 또는 페이지의 설정되지 않았습니다. - 우선 바인딩 ("http://www.silverlight.net/learn/data-networking/binding/data-binding-to-controls-(silverlight-quickstart)")에 대해 더 읽어야합니다. 실제 프로젝트에서 작업하고 일부 아키텍처를 설계하는 경우 MVVM 패턴을 읽어야합니다.

+0

Silverlight 기술을 이해하는 첫 단계를 생각하십시오. –

+0

코드 뒤에 주어진 데이터에 대해 바인딩하는 방법을 설명합니다. 하지만 TextBlock.Text 속성을 내 사용자 지정 속성 인 TitleProperty에 바인딩하려고합니다. – Aaginor

관련 문제