2

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

2 回答 2

1

在我看来,您在工作中使用了错误的控件。AGrid无需所有这些努力就可以处理这个问题:-

 <Grid>

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

现在ListBox总是出现在左下角。不仅如此,如果总可用高度小于列表框中所有内容的高度,它将被限制在可用高度并显示滚动条。否则您的代码将不得不跳过一些工作。

于 2010-05-18T13:16:15.927 回答
1

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

于 2010-05-18T14:38:19.140 回答