我想将列表中的位置结合在XAML它自己的高度。因此,它的左下角始终会在画布0.0。我使用elementBinding得到ActualHeight和转换器反转性质。但发送到转换器的高度为0。

如何解决这个还是我在这个错误的方式去?

<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>
有帮助吗?

解决方案

尝试结合{Binding ActualHeight, RelativeSource={RelativeSource Self},Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}

其他提示

听起来好像你正在使用错误的工作控制。一个Grid可以处理这个问题没有这一切的努力: -

 <Grid>

    <Canvas x:Name="DisplaySurface">
    </Canvas>
    <ListBox HorizontalAlignment="Left" VerticalAlignment="Bottom" ...>
       <!-- items --->
    </ListBox>
</Grid> 

现在的ListBox总是出现在左下角。不仅如此,但如果总的可用高度小于列表框中的内容全部的高度将在现有的高度上限,并显示滚动条。一些代码,否则必须赴汤蹈火工作了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top