У меня есть Grid
внутри Canvas
, определенной следующим образом:Почему в этом случае значение ActualWidth и ActualHeight 0.0?
<Canvas x:Name="outerCanvas">
<Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
<Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
<Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
<Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
</Grid>
</Canvas>
Моя проблема заключается в том, что на конструкторе окна, после InitializeComponents()
либо Grid.ColumnDefinitions[0].ActualWidth
или «любой прямоугольник». ActualWidth
установлены на 0.0 (то же самое для высот). Я не понимаю, что делать, чтобы получить эту информацию. любая помощь?
Наблюдение:
- Я не definig внешней ширины холста и высоту, но если я делаю, это does't решить мою проблему.
- Во время выполнения я могу видеть, что это
Canvas/Grid
занимает весь пространство окна, так что каждый прямоугольник внутри него естьActualWidth
с иActualHeight
сек - Сетка в ширина/высота привязана к холсту, но я попытался удалить эту привязку и мою проблему сохраняются
Спасибо! Просто небольшая коррекция: window.Measure возвращает void. Он изменяет свойства DesiredWidth/DesiredHeight :) Но ваша идея правильная. –
Это то, что происходит, когда вы вводите код с верхней части головы без двойной проверки API. Спасибо за исправление. MeasureOverride возвращает размер, но Measure просто сохраняет их. Ответ исправлен. –
Не уверен, что раньше работал «DesiredWidth», но более новые версии .NET используют DesiredSize.Width и DesiredSize.Высота –