在.cs中的HyperlinkButton.Content中设置TextBox的值

本文关键字:设置 TextBox 的值 Content cs 中的 HyperlinkButton | 更新日期: 2023-09-27 18:20:58

目前我有一个超链接按钮:

<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> 

这将允许我在超链接按钮中添加一个文本框:

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

然而,我需要更新后面的代码,这样它就不会更新<HyperlinkButton>.Content,而是更新TextBlock

有什么想法吗?

在.cs中的HyperlinkButton.Content中设置TextBox的值

您可以尝试:

<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";

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

类似的东西应该适用于您:

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

在实践中,您将其Text绑定到类型HyperlinkButtonTargetName的第一个出现的祖先。通过这种方式,您应该能够继续像一样进行编码

HyperLinkNav.TargetName= "Please select a link";