WPF WrapPanel 奇怪的内部缩进

发布于 2024-12-13 01:39:54 字数 658 浏览 0 评论 0原文

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

在此处输入图像描述

谁能解释一下,顶部、左侧等处的 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,问题仍然存在。

I have WPF WrapPanel, and a toolbar inside. The WrapPanel is red and the toolbar is blue.

enter image description here

Could anybody explain me, where did indent of WrapPanel on the top, left etc. come from, and how I can remove it?

Here is the sample code of the image:

<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>

Thanks in advance.

UPDATE: the problem is only with Toolbar, I just changed WrapPanel to DockPanel, and the problem is still exists.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄凉少年不暖心 2024-12-20 01:39:54

这可能与 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 的 控件模板(如 http://msdn.microsoft.com/en-us/ library/aa970772(v=vs.85).aspx - 尽管这个示例对于您的目的来说当然过于复杂,但原理是相同的)。

It's probably something about the default, built-in control template of the ToolBar control.

A quick fix is, obviously, to set Margin to -2 for example.

ToolBar is internally quite complex, it consists of a Grid, a Border, a DockPanel etc. you can try and traverse it with VisualTreeHelper. For example:

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

retrieves the DockPanel object. You can try and find the control with Margin or Padding greater than 0, and if you succeed you could probably even reset it from code (something like: (dockPanel as DockPanel).Margin = 0;)

In XAML, I'd try overriding ToolBar's control template (as demonstrated in http://msdn.microsoft.com/en-us/library/aa970772(v=vs.85).aspx - although this example is of course overly complex for your purpose, the principle is the same).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文