2011-05-05 59 views
2

我想用自定義樣式創建MyScrollViewer控件。 我創建了一個UserControlScrollViewer(我們能不能創造一個CustomControl因爲ScrollViewerSystem.Windows.Controls是一個密封類),並在UserControl的資源我已經添加了ScrollViewer(自定義樣式)的風格。在Silverlight中創建ScrollViewer UserControl時出現問題

在Codebehind中,我創建了一個屬性Content,它覆蓋了基類的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; 
      } 
     } 
} 

但這段代碼的問題是,我不能夠在運行時獲得Control的內線ScrollViewer。假設我在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> 

我不能夠在運行時設置文本,因爲我越來越txtLevelnull

+0

您需要創建一個usercontrol而不是爲默認的scrollviewer創建樣式的原因是什麼? – 2011-05-05 11:09:15

+0

@Xin我們已經創建了一個控制庫,我想在其中添加make conrol,以便每個人都可以使用該控件。 – sag 2011-05-05 11:27:17

+0

你也可以分享你的風格吧?我也不認爲一個usercontrol可以風格。 – 2011-05-05 11:46:06

回答

0

在自定義控件類中添加以下代碼,您將能夠從樣式中找到TextBlock。

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