如何控制Button的AutomationProperties.Name,以使该值不使用多行?

时间:2013-11-19 02:30:35

标签: xaml winrt-xaml

假设我在WinRT应用程序中有这个XAML:

<Button Content="&#xE109;" AutomationProperties.Name="Add A New Thing" Style="{StaticResource AppBarButtonStyle}" />

由于AutomationProperties.Name的值太长,按钮上的文本跨越两行。我希望它保持一条线。我尝试将按钮的宽度扩展到对于文本来说肯定足够宽的东西,但是文本似乎想要继续在两行上。我应该添加到这个Button控件的标记是什么,以保持文本在一行?

谢谢, 迈克

1 个答案:

答案 0 :(得分:1)

所以,这让我很难过。这是我试过的:

<StackPanel>
    <!-- Standard -->
    <AppBarButton Label="The quick brown fox jumps over the lazy dog"></AppBarButton>
    <!-- &#160; -->
    <AppBarButton Label="The&#160;quick&#160;brown&#160;fox&#160;jumps&#160;over&#160;the&#160;lazy&#160;dog"></AppBarButton>
    <!-- Underscore -->
    <AppBarButton Label="The_quick_brown_fox_jumps_over_the_lazy_dog"></AppBarButton>
</StackPanel>

每次尝试都会产生完全相同的结果,包装文字。

这为您提供了两个选项。

  1. 停止使用这么长的字符串
  2. 更新模板
  3. 所以,既然你想要使用AppBarButton而不是带有AppBar风格的标准按钮,我将满足我对Windows 8.1和Visual Studio 2013的回答。我还没有2012。

    模板(只需右键单击设计器中的控件,然后选择编辑模板/复制。您将在底部附近找到此行:

    <TextBlock x:Name="TextLabel" 
    Foreground="{ThemeResource AppBarItemForegroundThemeBrush}"
    FontSize="12" FontFamily="{TemplateBinding FontFamily}" TextAlignment="Center"
    TextWrapping="Wrap" Text="{TemplateBinding Label}" Width="88"/>
    

    您可以看到它已设置为换行。只需将TextWrapping="Wrap"更改为TextWrapping="NoWrap"即可获得所需内容。然后确保所有按钮都使用您编辑过的模板(因此您可能希望将其重新定位到app.xaml)。

    这很简单,真的。

    PS:你可能想在主控件上使用TextBlock.TextWrapping="NoWrap"的WPF技巧。这不起作用,所以我可以节省你的时间。

    祝你好运!