La siguiente Microsoft example code contiene lo siguiente:WPF Frontera DesiredHeight
<Grid>
...
<Border Name="Content" ... >
...
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="ContentRow" Property="Height"
Value="{Binding ElementName=Content,Path=DesiredHeight}" />
</Trigger>
...
</ControlTemplate.Triggers>
Cuando se ejecuta, sin embargo, este código genera el siguiente error de enlace de datos:
System.Windows.Data Error: 39 : BindingExpression path error: 'DesiredHeight' property not found on 'object' ''Border' (Name='Content')'. BindingExpression:Path=DesiredHeight; DataItem='Border' (Name='Content'); target element is 'RowDefinition' (HashCode=2034711); target property is 'Height' (type 'GridLength')
A pesar de este error, el código funciona correctamente. Revisé la documentación y DesiredHeight
no parece ser miembro de Border
. ¿Alguien puede explicar de dónde viene DesiredHeight
? Además, ¿hay alguna forma de resolver/suprimir este error para que mi salida del programa esté limpia?
Bien, eso funciona (aunque DesiredSize.Height es un doble). Entonces, ¿DesiredHeight simplemente hace un mapa a Border.DesiredSize.Height? ¿Es esto algún tipo de propiedad no documentada? –
Estoy seguro de que no está indocumentado, la cuestión es que XAML controla el tamaño en función de su contenido, incluso si establece la altura en 100, podría cambiar por cualquier otro motivo, y la nueva altura y ancho estarán contenidos en el Las propiedades ActualHeight y ActualWidth, respectivamente. Si desea que sus controles tengan un tamaño fijo, debe establecer MinWidth y MinHeight en su lugar, pero la mayoría de las veces no lo recomiendo. Principalmente todo esto es para resolver problemas de redimensionamiento que teníamos con WindowsApplications. – Carlo