避免在关注MVVM之后滚动

时间:2014-04-01 04:57:23

标签: wpf mvvm scroll itemscontrol

我有以下ItemsControl

<ItemsControl ItemsSource="{Binding Model.XList}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"></StackPanel>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

在每个模板上应用以下模板:

<DataTemplate DataType="{x:Type model:MyModelType}">
    <Border MaxWidth="140">
        <local:SingleView DataContext="{Binding}"/>
    </Border>
</DataTemplate>

实际上让他们每个人都成为&#34; SingleView&#34;控制。

ItemsControl包含在ScrollViewer

当我有大量项目(滚动似乎),并按下控件的任何按钮时,屏幕会跳转(可能是因为获得焦点的滚动已更改)。

我想避免在焦点后滚动。

我已经看到通过RequestBringIntoView事件通过Code-Behind的解决方案。

但我正在与 MVVM 合作,有没有人有解决方案?

1 个答案:

答案 0 :(得分:2)

帮助我的是避免关注ItemsControl

(如果有一个ItemsControl的包装器,那么你也可以避免获得焦点)

<ItemsControl ItemsSource="{Binding Model.XList}" Focusable="False">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"></StackPanel>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>