【问题标题】:Accessing Silverlight Control template items codebehind访问 Silverlight Control 模板项代码隐藏
【发布时间】:2012-06-28 13:26:23
【问题描述】:

我在页面布局中有一个控件模板,如下所示。

<Grid x:Name="LayoutRoot">
        <Grid.Resources>
        <ControlTemplate x:Key="myTemplate" TargetType="esri:MapTip">
                <Border CornerRadius="10" Background="#DDFFEEEE" BorderThickness="4" BorderBrush="#99FF0000">
                    <StackPanel Background="#DDFFFFFF">

                      <sdk:TabControl Height="180" Margin="5"  Name="tabControl1"  Width="300">      
                               <sdk:TabItem Header="Info" Name="infoTab">

                               <TextBlock x:Name="cityInfoTxt" Tag="{Binding [City_ID]}"/>    

                               </sdk:TabItem>
                        </sdk:TabControl>
                    </StackPanel>
                </Border>
            </ControlTemplate>

在后面的代码中如何访问??

我试过了,

private void button1_Click(object sender, RoutedEventArgs e)
{
    var te = this.LayoutRoot.Resources["myTemplate"] as ControlTemplate;

}

但无法访问选项卡控件中的文本块。

【问题讨论】:

  • 模板只是为您创建元素时要遵循的模式,它们不是元素本身(因为它们可能是使用同一模板的多个实例)。您要解决的实际问题是什么?
  • 我实际上更新了模板中的文本块
  • 你的意思是 text 属性吗?如果是这样,那应该通过一个绑定来完成,该绑定将拉取值(而不是尝试将值推入其中)。
  • 不是财产。我想访问

标签: c# silverlight layout silverlight-4.0 controltemplates


【解决方案1】:

在后面的代码上覆盖 OnAplyTemplate() 方法并尝试找到您的组件。

    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        var myTextBlock = GetTemplateChild("cityInfoTxt") as TextBlock;
    }

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多