场景:我有一个ListBox,包含来自Silverlight Toolkit的WrapPanel作为ItemsPanel:
<ListBox x:Name="listBoxFaelle">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.Template>
<ControlTemplate>
<Grid>
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Grid>
</ControlTemplate>
</ListBox.Template>
</ListBox>
此ListBox会每60秒自动填充一次RIA服务调用的结果。当应用程序等待LoadOperation完成时,它会显示标准的BusyIndicator,它是Silverlight业务应用程序模板的一部分。
只要用户在定时器事件触发时没有拖动ListBox的滚动条滑块,这就可以正常工作。
问题:如果用户在显示BusyIndicator时拖动滚动条滑块,则滚动条不再起作用,之后。即使释放鼠标左键,看起来鼠标指针仍然会被捕获到滑块。我假设发生这种情况是因为BusyIndicator在拖动时暂时从滑块中取走焦点。
问题:有没有办法找出ListBox的滚动条滑块当前是否被推送?
答案 0 :(得分:0)
据我所知,没有状态/属性可以确定是否正在按下滑块。
那说你可以尝试通过处理MouseLeftButtonDown and Up事件来自己跟踪它,但你可能还要考虑其他事件,具体取决于你的场景(鼠标滚轮?)
MouseLeftButtonUp当鼠标(或手写笔)位于UIElement上时(或当UIElement保持鼠标捕获时)释放鼠标左键(或手写笔的笔尖从平板电脑上移除)时发生。 (继承自UIElement。)
也可以通过使用ReleaseMouseCapture
释放MouseCapture(如果导致问题)来解决这个问题。同样,它取决于您希望从用户的角度发生什么:跳过数据的加载(这是我更喜欢的,因为我不喜欢滚动时要更改的内容)或重置列表框并滚动到顶部(在我看来很难看)