2011-05-05 6 views
2

사용자 정의 스타일로 MyScrollViewer 컨트롤을 만들고 싶습니다. 나는이 UserControlScrollViewer 위해 만든 내가 ScrollViewer (사용자 정의 스타일)에 대한 스타일을 추가하고, UserControl의 자원 (우리가 만들 수 캔트 CustomControlSystem.Windows.Controls에서 ScrollViewer가 봉인 클래스이기 때문에).Silverlight에서 ScrollViewer UserControl을 만드는 데 문제가 있습니다.

코드 숨김에서 Content (즉 UserControl)을 덮어 쓰는 속성 을 만들었습니다.

코드 숨김 :

public partial class ScrollViewer : UserControl 
    { 
     private System.Windows.Controls.ScrollViewer _scrollViewer; 
     public ScrollViewer() 
     { 
      InitializeComponent(); 
      // DataContext = this; 
      _scrollViewer = new System.Windows.Controls.ScrollViewer(); 
     } 

     public new object Content 
     { 
      get { return _scrollViewer; } 
      set 
      { 
       _scrollViewer.Content = value; 
       base.Content = _scrollViewer; 
      } 
     } 
} 

그러나이 코드 문제는 내가 런타임에 ScrollViewer 내부 Control의를 얻을 수 아니다는 것이다. 내가 ScrollViewer 안에 TextBox을 가지고 있다고 가정 해 봅시다. 그 컨트롤을 얻을 수 없습니다. 예컨대 :

<ScrollViewer x:Name="scrDetail" > 
    <StackPanel Margin="6" Grid.Column="1" Grid.Row="0"> 
     <Label Name="lblLevel" Content="Level" Margin="2" /> 
     <TextBox HorizontalAlignment="Stretch" Margin="2" Name="txtLevel"       IsEnabled="False" Text="System" /> 
    </StackPanel> 
</ScrollViewer> 

나는 nulltxtLevel을 얻고 있기 때문에 런타임에 텍스트를 설정할 수 없습니다입니다.

+0

기본 scrollviewer에 대한 스타일을 만들지 않고 usercontrol을 만들어야하는 이유는 무엇입니까? –

+0

@Xin 우리는 컨트롤 라이브러리를 만들었습니다. 저는 컨트롤을 추가하여 모든 사람이 그 컨트롤을 사용할 수 있도록하고 싶습니다. – sag

+0

도 스타일을 공유 할 수 있습니까? 또한 나는 usercontrol 스타일 수 있다고 생각하지 않습니다. –

답변

0

아래 코드를 사용자 정의 컨트롤 클래스에 추가하면 스타일에서 TextBlock을 찾을 수 있습니다.

public override void OnApplyTemplate() { 
     base.OnApplyTemplate(); 
     this.textBlock = this.GetTemplateChild("YourTextBlockName") as TextBlock; } 
관련 문제