在Silverlight中创建ScrollViewer UserControl时出现问题

时间:2011-05-05 05:39:40

标签: wpf silverlight

我想用自定义样式创建一个MyScrollViewer控件。 我为UserControl创建了ScrollViewer(我们无法创建CustomControl,因为ScrollViewer来自System.Windows.Controls是一个密封的类),而UserControl } s资源我为ScrollViewer添加了一种样式(自定义样式)。

在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。假设我TextBoxScrollViewer,我无法控制。 E.g:

<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

1 个答案:

答案 0 :(得分:0)

在自定义控件类中添加以下代码,您将能够从样式中找到TextBlock。

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