【问题标题】:How to Remove Extra Space Around TextBlock如何删除 TextBlock 周围的多余空间
【发布时间】:2014-04-13 22:02:21
【问题描述】:

我为我的 TextBlock 设置了以下设置

<TextBox x:Name="SearchTextBlock" InputScope="Search" Opacity="0.999" 
             Height="Auto" VerticalAlignment="Top"
                 BorderBrush="{StaticResource ThemeBrush}" BorderThickness="8" />

产生

但 TextBlock 周围仍有额外的空间。我该如何删除它?我需要创建一个样式还是可以在 TextBlock 标签本身内完成?

【问题讨论】:

  • 您是否尝试将 Margin 设置为 0? TextBox 的父级是什么,是否设置了 Padding 或 Margin?
  • Margin="-10" 应该这样做,或者您可以编辑模板并更改模板中项目的填充
  • 我将 Padding 和 Margin 设置为 0,但没有任何效果。此外,设置 Margin="-10" 还不够。我可以设置更多,但如何为此创建样式?
  • 我使用 Padding=-10 和透明背景和 BorderBrush 使 TextBlock 的行为更像 Silverlight 和 WPF 标签实现

标签: xaml windows-phone-8 textblock


【解决方案1】:

在设计器中右键单击TextBox 并选择Edit Template -> Edit a Copy

选择你想保存它的地方并选择它的关键

然后分析生成的代码你看到Margin="{StaticResource PhoneTouchTargetOverhang}" 你可以和女巫一起玩,直到你喜欢这个结果。

【讨论】:

    【解决方案2】:

    TextBox 应用了主题样式。主题之间的边距和填充等内容应该相当一致。我发现“覆盖”某物(包括文本框)样式的最佳方法是复制样式资源并对其进行调整。这可以通过“文档大纲”窗口轻松完成。

    首先,确保“文档大纲”窗口可见。如果您使用 Visual C# 键盘线程,则可以使用 Ctrl+W,U 完成此操作。或者,查看\其他 Windows\文档大纲。

    接下来,确保在设计图面上选择了要从中复制资源的控件。然后,转到文档大纲,您将看到其中选择的控件。右键单击控件并选择编辑模板/编辑副本...。这将创建样式资源的副本(默认在您的页面 XAML 中。但您可以选择其他目的地。)。然后,您可以根据自己的喜好编辑该私有资源。

    就文本框周围的空间量而言,请在该样式中查找诸如“MainBorder”之类的内容。

    更新:

    verdesrobert 获取样式副本的方法比我的要快得多:)。每天学习新东西!

    【讨论】: