【问题标题】:Why would actual width be zero when width is set to a value. WPF当宽度设置为一个值时,为什么实际宽度为零。 WPF
【发布时间】:2012-12-20 09:37:08
【问题描述】:

我有一个扩展Canvas 的类。在创建时,我明确地将其宽度设置为一个值:

Public Sub New(w As Integer, h As Integer)
    Me.Width = w
    Me.Height = h
End Sub

现在我使用cnvPreview.Children.Add(e) 将这个实例添加到另一个画布,其中e 是我扩展画布的实例。

但是,当我运行应用程序时,这些画布的 ActualWidthActualHeight 为 0。

如何解决这个问题?

【问题讨论】:

  • 你什么时候阅读ActualWidthActualHight
  • 刚将孩子添加到画布后,我使用消息框进行调试。
  • 不要将画布缩小到可能的最小尺寸,但仍然完全显示自己的孩子吗?这可能导致ActualHeightActualWidth 值为零。尝试添加一个TextBlock 然后读取值。
  • @Asryael 好像是这样,当只改变背景颜色时,我可以看到画布占据了我指定的区域,但actualHeightactualWidth 仍然为零。如果添加了组件,则会显示所需的大小。谢谢。
  • @Blaffie 添加评论作为答案。如果是,请标记为答案!

标签: wpf layout actualwidth actualheight


【解决方案1】:

不要Canvas's 缩小到尽可能小的尺寸,但仍然充分展示自己的孩子?这可能导致ActualHeightActualWidth 值为零。尝试添加一个TextBlock 然后读取值。

我相信这在另一个帖子中得到了更好的解释:Why are ActualWidth and ActualHeight 0.0 in this case?

【讨论】:

    【解决方案2】:

    请注意,ActualHeightActualWidth 将在呈现控件后为您提供值。假设如果 Canvas HeightWidth50 并且在渲染后 Canvas 被缩小,那么它将返回一个较低的 ActualHeightActualWidth 值,如果不是,则可能为零可见。

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多