绑定位置到ActualHeight

时间:2010-05-18 11:34:13

标签: silverlight xaml binding silverlight-4.0 actualheight

我想在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>

2 个答案:

答案 0 :(得分:1)

听起来像你正在使用错误的控件来完成这项工作。 Grid可以在不付出任何努力的情况下处理这个问题: -

 <Grid>

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

现在ListBox始终显示在左下角。不仅如此,如果总可用高度小于列表框中所有内容的高度,它将被限制在可用高度并显示滚动条。否则你的代码就必须跳过箍筋。

答案 1 :(得分:1)

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