【问题标题】:Binding position to ActualHeight将位置绑定到 ActualHeight
【发布时间】:2011-02-20 20:34:07
【问题描述】:

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

【问题讨论】:

  • 感谢您的回复!我的目标是在另一个控件的顶部/上方显示列表框,因此我需要画布能够为列表框提供负位置。把它想象成一个向上的下拉菜单。

标签: silverlight xaml binding silverlight-4.0 actualheight


【解决方案1】:

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

【讨论】:

  • 这就是我想要的。谢谢!
【解决方案2】:

在我看来,您在工作中使用了错误的控件。 Grid 可以轻松处理这个问题:-

 <Grid>

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

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

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多