我想在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>发布于 2010-05-18 22:38:19
尝试使用绑定{Binding ActualHeight, RelativeSource={RelativeSource Self},Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}
发布于 2010-05-18 21:16:16
在我看来,你在工作中使用了错误的控制。一个Grid可以不用做这些工作就能处理这个问题:
<Grid>
<Canvas x:Name="DisplaySurface">
</Canvas>
<ListBox HorizontalAlignment="Left" VerticalAlignment="Bottom" ...>
<!-- items --->
</ListBox>
</Grid> 现在,ListBox始终显示在左下角。不仅如此,如果总的可用高度小于列表框中所有内容的高度,它将被限制在可用高度并显示滚动条。否则你的代码将不得不跳转来解决一些问题。
https://stackoverflow.com/questions/2856792
复制相似问题