Problem in creating ScrollViewer UserControl in Silverlight
I want to create a MyScrollViewer control with customized style.
I have created a UserControl for ScrollViewer (we cant able 开发者_运维知识库create a CustomControl because ScrollViewer From System.Windows.Controls is a sealed class), and in UserControls resources I have added an style for ScrollViewer (Custom Style).
In Codebehind I have created a property Content which overrides the Content of base class(i.e. UserControl).
CodeBehind:
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;
}
}
}
But problem with this code is that I am not able to get Controls inside ScrollViewer at runtime. Suppose I have a TextBox inside ScrollViewer, I am not able to get that control. 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>
I am not able to set text at runtime because I am getting txtLevel as null.
Add below code in custom control class and you will be able to find TextBlock from style.
public override void OnApplyTemplate() {
base.OnApplyTemplate();
this.textBlock = this.GetTemplateChild("YourTextBlockName") as TextBlock; }
加载中,请稍侯......
精彩评论