Tengo un Grid
dentro de un Canvas
define así:¿Por qué son ActualWidth y ActualHeight 0.0 en este caso?
<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>
Mi problema es que, en el constructor de la ventana, después de InitializeComponents()
ya sea Grid.ColumnDefinitions[0].ActualWidth
o "cualquier rectángulo". ActualWidth
están todos configurados en 0.0 (lo mismo para las alturas). No estoy averiguando qué hacer para obtener esta información. ¿alguna ayuda?
Observaciones:
- No estoy definig la anchura y la altura de la lona exterior, pero si lo hago, es does't resolver mi problema.
- En tiempo de ejecución puedo ver que este
Canvas/Grid
ocupa todo el espacio de la ventana, por lo que cada rectángulo interior tieneActualWidth
s yActualHeight
s - de la rejilla de anchura/altura se une a la lona pero he intentado retirar esta unión y mi problema persistieron
Gracias! Solo una pequeña corrección: window.Measure devuelve void. Cambia las propiedades DesiredWidth/DesiredHeight :) Pero tu idea es correcta. –
Eso es lo que sucede cuando escribe el código en la parte superior de la cabeza sin verificar dos veces las API. Gracias por la corrección. MeasureOverride devuelve el tamaño, pero Measure simplemente los almacena. Respuesta corregida –
No estoy seguro de si "DesiredWidth" funcionó antes, pero las versiones más nuevas de .NET usan DesiredSize.Width y DesiredSize.Altura –