2009-08-07 4 views
3

컨트롤 사용자가 사용자 지정 특성 및 내용을 제공 할 수 있어야하는 Silverlight UserControl을 만들고 있습니다. 내 사용자 지정 특성을 종속성 속성으로 노출시키고 ContentControl에서 파생시키는 것만 큼 쉽지만 생각하지는 않습니다. 여기 Silverlight UserControl에 콘텐트 컨테이너를 만들려면 어떻게해야합니까?

이에 대한 내 질문이 있습니다 :

  1. 내가 속성 간단한 종속성 속성으로 작업 할 수 있지만 컨트롤 자체의 UI에 바인딩 할 수있어

    가, 나는의 DataContext를 설정했다 자체 클래스 (this.DataContext = this)로 제어합니다. 이것은 온통 더러운 느낌이 ... 더 나은 방법이 있나요?

  2. 콘텐츠 사용자 요소를 사용하여 사용자 지정 컨트롤을 가져올 수 있지만이를 컨트롤 자체에 표시하는 방법을 알지 못합니다. Content가 현재 바인딩 컨텍스트의 Content에 바인딩되어 있지만 작동하지 않는 ContentPresenter라고 생각했습니다.

이 기능을 사용하고 싶습니다. 그러나 권장/우수 사례가 무엇이며 왜 그런지에 관심이 있습니다. 나는이 일을 찾기가 힘들었다.

답변

4

참고 : 나는 실버 경험이없는, 그러나 WPF에서 나는 다음과 같은

이의 당신이 부동산 MyProperty 함께 UserControl에서 파생 된 컨트롤 MyControl 있다고 가정 해 봅시다 할 것입니다. 나는 예쁜 당신의 제어를위한 ControlTemplate이 정의하는 것입니다 생각 : (! 편도)을 빠르게 만들 수 있습니다 {TemplateBinding}으로

<UserControl.Template> 
    <ControlTemplate TargetType="{x:Type SomeNamespace:MyControl}"> 
     <StackPanel> 
      <TextBlock Text="{TemplateBinding MyProperty}"/> 
      <ContentPresenter/> 
     </StackPanel> 
    </ControlTemplate> 
</UserControl.Template> 

을 바인딩 컨트롤의 속성에, 당신은 여전히 ​​정상적인 {바인딩} 구문을 사용할 수 있습니다 동안 실제 DataContext에 바인딩 할 수 있습니다. ControlTemplate에 ContentPresenter를 배치하면 Content Property에있는 내용이 자동으로 표시됩니다.

관련 문제