我想在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>
答案 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'}