【问题标题】:Silverlight GridSplitter: simulate "snap to grid"Silverlight GridSplitter:模拟“对齐网格”
【发布时间】:2009-12-25 02:59:53
【问题描述】:

我正在使用 Silverlight 3。

我有一个有 2 列的网格,它们之间有一个 GridSplitter。 拖动时如何使 GridSplitter 捕捉到 5px 增量?

谢谢。

【问题讨论】:

    标签: c# silverlight silverlight-3.0 gridsplitter


    【解决方案1】:

    我最好的猜测是您必须捕获 MouseLeftButtonDown 事件并检测拖动。如果不拖动,则取消事件。如果检测到拖动,则在类变量中捕获开始位置。在 MouseMove 中,将鼠标位置与起始位置进行比较,并确定是增加还是减少 Grid Splitter 的位置。

    要使其正常工作,我认为您需要根据上面的增量/减量决定以编程方式调整左侧网格列的宽度。

    我很想知道这是怎么回事。

    【讨论】:

    • 谢谢,乔尔。你说的是公平的,我可能不得不走那条路。不过,就目前而言,我正在等待其他一些答案,然后再将任何答案标记为“已接受”。
    • 这是一个相关的答案,所以我将其标记为已接受。我也希望有其他建议。
    【解决方案2】:

    GridSplitter 公开了 DragIncrement 属性,该属性设置用户必须拖动鼠标来调整行或列大小的最小距离。因此,您可以执行以下操作:

    <GridSplitter Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" DragIncrement="5"/>
    

    编辑:我刚刚意识到您在谈论 Silverlight。看起来 DragIncrement 属性仅在 WPF 中可用。对不起你的运气。

    【讨论】:

    • 是的,DragIncrement 属性是我想要的,但不幸的是,在 Silverlight 3 中,我们只有一个值为 1 的私有常量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2020-05-12
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多