Почему фактическая ширина будет нулевой, если ширина установлена ​​в значение? WPF

У меня есть класс, который расширяет Canvas, При создании я явно устанавливаю его ширину в значение:

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

Теперь я добавляю экземпляры этого на холст к другому холсту, используя cnvPreview.Children.Add(e) где e это пример моего расширенного холста.

Однако когда я запускаю приложение, ActualWidth а также ActualHeight из этих полотен 0.

Как это можно исправить?

2 ответа

Решение

Не Canvas's уменьшить до минимально возможного размера, но при этом по-прежнему отображать полностью своих детей? Может ли это быть причиной ActualHeight а также ActualWidth значения должны быть нулевыми. Попробуйте добавить, скажем, TextBlock и чтение значений затем.

Я полагаю, что это объясняется лучше в этом другом посте: Почему ActualWidth и ActualHeight 0.0 в этом случае?

Обратите внимание, что ActualHeight а также ActualWidth даст вам значения после рендеринга элемента управления. Предположим, если CanvasHeight а также Width 50 и после рендеринга Canvas сжимается, то он вернется ниже ActualHeight а также ActualWidth значение или, возможно, ноль, если не видно.

Другие вопросы по тегам