La unión a la posición ActualHeight
-
27-09-2019 - |
Pregunta
Quiero unir una posición listas para su propia altura en XAML. Por lo que su esquina inferior izquierda siempre será a 0.0 de la lona. Estoy usando elementBinding para obtener el ActualHeight
y un convertidor para invertir la propiedad. Pero la altura enviado al convertidor es 0.
¿Cómo puedo solucionar esto o voy en este el camino equivocado?
<Canvas x:Name="DisplaySurface">
<ListBox x:Name="MenuList" Visibility="Visible"
Canvas.Top="{Binding ElementName=MenuList, Path=ActualHeight,
Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}">
<ListBoxItem Content="item 1" />
<ListBoxItem Content="item 2" />
<ListBoxItem Content="item 3" />
<ListBoxItem Content="item 4" />
<ListBoxItem Content="item 5" />
<ListBoxItem Content="item 6" />
</ListBox>
</Canvas>
Solución
Trate la unión {Binding ActualHeight, RelativeSource={RelativeSource Self},Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}
Otros consejos
Me suena como que está utilizando el control equivocada para el trabajo. Un Grid
puede manejar esto sin todo este esfuerzo: -
<Grid>
<Canvas x:Name="DisplaySurface">
</Canvas>
<ListBox HorizontalAlignment="Left" VerticalAlignment="Bottom" ...>
<!-- items --->
</ListBox>
</Grid>
Ahora el ListBox
siempre aparece en la esquina inferior izquierda. No sólo eso, pero si la altura total disponible es inferior a la altura de todo el contenido en el cuadro de lista que se limitará a la altura disponible y mostrar la barra de desplazamiento. Algo que su código de lo contrario tendría que pasar por el aro de trabajar.