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

Mg *_*een 4 uwp

如何删除ContentDialog中的填充/边距?这个或其他没有帮助我.我在ContentDialog的标签和Root Grid中尝试了填充和边距,如下所示.

<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>
Run Code Online (Sandbox Code Playgroud)

没有运气.但是,在Live Visual Tree中,我找到了一个占据这个区域的Grid(DialogSpace).但是如何访问和修改它呢?

在此输入图像描述

And*_*é B 8

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

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

<Thickness x:Key="ContentDialogPadding">24,18,24,24</Thickness>
Run Code Online (Sandbox Code Playgroud)

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

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

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

<ContentDialog ...>
    <ContentDialog.Resources>
       <Thickness x:Key="ContentDialogPadding">0,0,0,0</Thickness>
    </ContentDialog.Resources>
     ....
</ContentDialog>
Run Code Online (Sandbox Code Playgroud)
  • 第二个选项包括将模板"导入"到项目中,并简单地通过DialogScope Grid 的依赖属性删除对ContentDialogPadding资源的引用.但是这些模板显然非常大,而且对于这么小的修改,它似乎不是合适的选择.Padding

generic.xaml文件的位置如下:

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