2

我的布局如下所述:

<ScrollViewer>
  <StackPanel Orientation="Horizontal">
     <!-- ... -->
     <ScrollViewer>
        <ItemsControl.ItemsPanel>
             <ItemsPanelTemplate>
                   <StackPanel ScrollViewer.VerticalScrollBarVisibility="Visible"  Orientation="Vertical" />
             </ItemsPanelTemplate>
         </ItemsControl.ItemsPanel> 
     </ScrollViewer>

      <!-- ... -->
  </StackPanel>
</ScrollViewer>

我想实现天气应用程序中存在的效果。

在我的应用程序中,当您使用鼠标滚轮水平滚动时,当指针越过 ItemsControl 时,它会立即开始垂直滚动,而在天气应用程序中有流畅的水平滚动效果,并且当有一段时间悬停该垂直集合时开始垂直滚动。

这种行为是默认实现的吗?

席蒙

4

2 回答 2

2

通常,指导原则是在水平滚动中继器中引入垂直滚动是一个坏主意。我认为您不应该将 Weather(或任何标准的 Windows 8 应用程序)视为模仿的模型。他们中的大多数人以最糟糕的方式违反了指导方针。

天气应用程序会根据当前鼠标位置、网格运动和焦点控制来完成您的要求。这是一种复杂的说法,一些开发人员想出了一个解决方案来帮助他们的 UI 尽可能地让用户感到困惑。

请不要。

于 2013-03-03T23:00:55.183 回答
0

我认为他们为了达到这种效果所做的是:

如果鼠标在垂直列表上停留一段时间,它们会停用水平滚动并激活垂直滚动。一旦鼠标移出列表,它们就会切换回来(停用垂直滚动并激活水平滚动)。

我还没有测试过它是否有效,但我认为它应该。

于 2013-03-03T21:51:05.780 回答