在.cs中的HyperlinkBut​​ton.Content中设置TextBox的值

时间:2012-01-22 14:13:19

标签: c# silverlight xaml

目前我有一个HyperlinkBut​​ton:

<HyperlinkButton 
   Name="HyperLinkNav" 
   FontSize="24"
   HorizontalContentAlignment="Left" Foreground="White">
       <HyperlinkButton.Content>test</HyperlinkButton.Content>
 </HyperlinkButton>

在我的代码背后,我得到了:

HyperLinkNav.Content = "Please select a link";

<HyperlinkButton>内容设置为“请选择一个链接”。

我想要做的是更改<HyperlinkButton>的模板以包含TextBox,如下所示:

<Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">  
                        <!--<TextBlock x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" TextDecorations="Underline" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>--> 
                        <ContentPresenter x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>  
                    </Border> 

这将允许我将TextBox添加到HyperlinkBut​​ton:

 <HyperlinkButton.Content> 
        <StackPanel Orientation="Horizontal">  
            <TextBlock Text="Next Page"/>  
            <Image Source="SampleImageResource.jpg" Width="50" Height="50"/>  
        </StackPanel> 
 </HyperlinkButton.Content> 

但是我需要更新后面的代码,以便更新<HyperlinkButton>.Content而不是更新TextBlock

任何想法?

2 个答案:

答案 0 :(得分:0)

你可以尝试:

<HyperlinkButton.Content> 
    <StackPanel Orientation="Horizontal">  
        <TextBlock x:Name="TB" Text="Next Page"/>  
        <Image Source="SampleImageResource.jpg" Width="50" Height="50"/>  
    </StackPanel> 
</HyperlinkButton.Content> 

并在代码隐藏中:

TB.Text = "Please select a link";

我不确定这是不是你想要的。我试图回答我从这个问题中理解的内容。

答案 1 :(得分:0)

这样的应该为你工作:

<TextBlock x:Name="TB" Text="{Binding RelativeSource= {RelativeSource FindAncestor, 
        AncestorType={x:Type HyperlinkButton}}, Path=TargetName} ... />

在实践中,您将Text绑定到类型为HyperlinkButton的{​​{1}}的第一个已发生的祖先。通过这种方式,您能够继续像这样编码

TargetName