【问题标题】:stackpanel trim off excess childrenstackpanel 修剪掉多余的孩子
【发布时间】:2010-01-19 19:46:11
【问题描述】:

我有一个高度固定的堆栈面板(垂直方向),我在其中放入了 n 个高度可变的子元素,如何删除被新添加的子元素“推出”的子元素。

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

    您需要首先确定一个孩子相对于堆栈面板顶部的位置:-

    GeneralTransform gt = aChild.TransformToVisual(theStackPanel);
    Point pos = gt.Transform(new Point(0, 0));
    

    你还需要 Stackpanel 的实际高度:-

    Double height = theStackPanel.ActualHeight;
    

    现在如果 pos.Y > height 则子元素超出 StackPanel 的底部边缘。

    【讨论】:

    • 这很有趣,但是,当我添加新元素时,堆栈面板实际高度会发生变化,因此 pos.Y > height 永远不会为真,因为高度会增长,它会超出其容器(在我的情况下是网格)。解决方案是针对 stackpanels 容器检查 pos.Y。顺便提一句。谢谢你的想法。
    • 我还想补充一点,这与 VirtualizingStackPanel 对象(如 ListBox 中使用的对象)的工作方式不同,因为 ActualHeight 成为它可以包含的项目数,而不是像素数。
    • @Boris:有趣的是,这不是我的测试经验。你给你的堆栈面板一个特定的高度?
    • 不,它不是固定的,它是在其容器中拉伸的。(和全屏)容器。
    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多