如何在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)。但是如何访问和修改它呢?
最佳答案
在这些情况下,第一步应该始终是查找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>
Padding
依赖项属性简单地删除对ContentDialogPadding资源的引用。但是这些模板显然非常大,而对于这么小的修改,它似乎不是合适的选择。
generic.xaml文件的位置如下:
C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\{build version}\Generic