如何在ContentDialog中删除填充/边距? This或其他没有帮助我。我尝试在ContentDialog的标签和Root Grid中使用padding和margin,如下所示。

<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)。但是如何访问和修改它呢?

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

最佳答案

在这些情况下,第一步应该始终是查找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}">
  • 解决此问题的最简单方法是,您可以在项目中使用相同的 key 标识符定义自己的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 Grid的Padding依赖项属性简单地删除对ContentDialogPadding资源的引用。
    但是这些模板显然非常大,而对于这么小的修改,它似乎不是合适的选择。

  • generic.xaml文件的位置如下:
    C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\{build version}\Generic
    

    10-07 12:26