如何从内容对话框中删除填充?

时间:2018-06-03 10:14:33

标签: uwp

如何删除ContentDialog中的填充/边距? This或其他人没有帮助我。我尝试过padding& ContentDialog的标记和根网格中的边距如下所示。

<ContentDialog...  Padding="0" Margin="0">

<Grid Background="Bisque" Width="500" Height="400" Padding="0" Margin="0">            
<Button Content="X" Height="40" Width="40" VerticalAlignment="Top" 
HorizontalAlignment="Right"></Button>
</Grid>
没有运气。但是,在Live Visual Tree中,我找到了一个占据这个区域的Grid(DialogSpace)。但是如何访问和修改呢?

enter image description here

1 个答案:

答案 0 :(得分:6)

在这些情况下,第一步应该始终是查找 generic.xaml 文件,该文件负责定义多个控件的模板。

查看为 10.0.16299 版本( Fall Creators Update )定义的文件,我可以找到以下资源定义:

<Thickness x:Key="ContentDialogPadding">24,18,24,24</Thickness>

Grid的模板定义期间,后来在名为 DialogSpace ContentDialog上引用了(正如您已正确识别的那样)。

<Grid x:Name="DialogSpace" Padding="{ThemeResource ContentDialogPadding}">
  • 解决此问题的最简单方法是,您可以使用相同的密钥标识符在项目中定义自己的Thickness资源, 在哪里覆盖值 24,18,24,24 更符合你的意图。

您可以在范围是整个应用程序的位置覆盖此资源,方法是在 App.xaml 上实现它。但是想象你的应用程序只有一个ContentDialog,或者你只想在一个地方做这个,那么在较低的范围内定义它是很合理的,比如在ContentDialog资源级别,像这样:

<ContentDialog ...>
    <ContentDialog.Resources>
       <Thickness x:Key="ContentDialogPadding">0,0,0,0</Thickness>
    </ContentDialog.Resources>
     ....
</ContentDialog>
  • 第二个选项包括将模板“导入”到项目中,只需通过 DialogScope的Padding依赖项属性删除对 ContentDialogPadding 资源的引用/ em>网格。 但是这些模板显然非常大,而且对于这么小的修改,它似乎不是合适的选择。

generic.xaml文件的位置如下:

C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\{build version}\Generic