【问题标题】:Set padding of a Canvas in WPF在 WPF 中设置画布的填充
【发布时间】:2018-01-13 16:52:24
【问题描述】:

我有一个画布,里面有一个矩形和一个圆圈:

<Canvas x:Name="CanvasMain" Width="595" Height="842" Background="White" HorizontalAlignment="Center" >
        <Rectangle Fill="Tomato" Height="335" Canvas.Left="40" Stroke="Black" Canvas.Top="60" Width="265"/>
        <Ellipse Fill="Tomato" Height="175" Canvas.Left="370" Stroke="Black" Canvas.Top="465" Width="200"/>
</Canvas>

我想以编程方式设置画布的填充。我应该设置 Canvas 内所有元素的边距以实现此目的还是有任何替代方法

【问题讨论】:

  • Canvas 对象的上下文中填充甚至意味着什么? Canvas 的全部意义在于提供一个使用显式 X 和 Y 值布置子对象的位置,而不是与 Canvas 本身以外的任何东西相关。你想达到什么效果,Canvas.Margin 属性没有给你?
  • @PeterDuniho:Canvas.Margin 减小了画布的大小。这可能是不希望的(例如,如果画布有背景)。
  • @JanDotNet:我很清楚Canvas.Margin 做了什么。但是如果Canvas 有一个填充属性,它也会减少Canvas 中的可用布局大小。因此,如果它可能是不可取的(如您所声称的),则 OP 不会要求设置填充的方法。
  • 我正在尝试在画布边框和内部元素之间创建间隙。一种方法是增加内部所有元素的顶部、底部、左侧和右侧的值,并相应地增加画布的高度和宽度。但在这种情况下,我必须运行一个循环来查找每个元素并在每次更改填充时重新定位它们@Peter Duniho
  • “我正在尝试在画布边框和内部元素之间创建间隙” -- 画布没有边框。那么在那个不存在的地方创造一个缺口是什么意思呢?再说一次,简单地设置 Margin 属性 not 以什么方式做你想要的?请确保您edit您的问题得到改进和澄清。

标签: c# wpf padding


【解决方案1】:

我想以编程方式设置Canvas 中的Padding。我应该设置Canvas 内所有元素的边距以实现此目的还是有任何替代方法

或者调整元素的坐标(Canvas.TopCanvas.Left 属性)。

Canvas 没有填充的概念,因此您需要以某种方式自己创建间隙。真的没有对错。

【讨论】:

【解决方案2】:

我认为您可以尝试将画布放在边框中。

<Border x:Name="rootBorder">
      <Canvas x:Name="CanvasMain" Width="595" Height="842" Background="White" HorizontalAlignment="Center" >

      </Canvas>
</Border>

然后你可以设置边框的填充。

rootBorder.Padding = new Thickness(25);

【讨论】:

  • 由于 OP 并没有真正解释他们想要做什么,你没有理由相信上述内容实际上解决了他们提出的问题。此外,设置包含Canvas 的元素的填充实际上并不能做任何简单地设置Canvas.Margin 属性会做的事情。所以这甚至不是完成特定行为的方法。
  • 我知道他想做什么,我同意你使用 Margin 属性应该是最简单的方法。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
相关资源
最近更新 更多