包含曲面交互元素的ScatterViewItems

时间:2009-06-15 15:08:06

标签: wpf pixelsense scatterview

这是交互元素中交互元素的古老问题,但我希望ScatterViewItem包含其他表面交互元素,例如SurfaceButton或SurfaceCheckBox。我已经拥有了所有的元素,他们对点击等做出反应。问题是,一旦我点击了一个不包含控件的区域,我只能获得正常的ScatterView行为。

即使联系人位于SurfaceButton或SurfaceCheckbox上,是否有优雅的解决方案允许拖动?

e.g。

<s:ScatterView >    
    <Grid Width="200" Height="200">
        <s:SurfaceButton />
    </Grid>
</s:ScatterView>

3 个答案:

答案 0 :(得分:1)

在表面社区论坛上提出同样的问题之后,回答是这与所有WPF控制行为一致。例如,如果将交互式元素添加到列表框中,当鼠标悬停在按钮上时,ListBox将不会对交互做出反应。

如果有其他人遇到这个问题,最好通过设计控件来解决这个问题,而不是试图一起破解这种行为。从一个应用程序到另一个应用程序以及一个控件到另一个应用程

答案 1 :(得分:0)

你可以通过监听其中一个子控件上的ContactLeave事件来“破解”这种行为,并调用contact.Capture(scatterviewitem)。这将告诉svi接管听取和回复联系人。但是, 会导致行为与Surface的其他部分不一致,并且可能会造成混淆。它甚至与自身也不一致...这使得可以在不抬起手指的情况下从内部控制切换到SVI,但用户仍然必须抬起手指才能切换回内部控制。

答案 2 :(得分:0)

要解决此问题,区分预览和非预览事件非常重要:

http://eightyeightpercentnerd.blogspot.com/2008/06/wpf-preview-vs-non-preview-events.html

因此,您可以决定要收听哪个事件。

然而,作为一般性建议,如果事件的Handled Flag没有被进一步路由,那么将其设置为true总是一个好主意。