WPF WrapPanel奇怪的内部缩进

时间:2011-11-02 11:08:10

标签: c# wpf wpf-controls

我有WPF WrapPanel,里面有一个工具栏。 WrapPanel为红色,工具栏为蓝色。

enter image description here

有人可以解释一下,WrapPanel在顶部,左边等处的缩进来自哪里,以及我如何删除它?

以下是图片的示例代码:

<WrapPanel Orientation="Horizontal" Background="Red">
       <ToolBar x:Name="tFirst" Background="Blue" ToolBarTray.IsLocked="True">
         <Button ToolTip="New" Content="New" />
         <Button ToolTip="Save" Content="Save" />
         <Button ToolTip="Delete" Content="Delete" />
       </ToolBar>
</WrapPanel>

提前致谢。

更新:问题仅出在工具栏上,我刚刚将WrapPanel更改为DockPanel,问题仍然存在。

1 个答案:

答案 0 :(得分:1)

这可能与ToolBar控件的默认内置控件模板有关。

显然,快速解决方法是将Margin设置为-2。

ToolBar内部相当复杂,它由GridBorderDockPanel等组成。您可以尝试使用VisualTreeHelper遍历它。例如:

var dockPanel = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(tFirst, 0), 1), 0);

检索DockPanel对象。您可以尝试找到MarginPadding大于0的控件,如果成功,您甚至可以从代码重置它(例如:(dockPanel as DockPanel).Margin = 0;

在XAML中,我尝试覆盖ToolBar's控制模板(如http://msdn.microsoft.com/en-us/library/aa970772(v=vs.85).aspx中所示 - 虽然这个例子当然过于复杂,但原理是相同的)。