我有以下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
合作,有没有人有解决方案?
答案 0 :(得分:2)
帮助我的是避免关注ItemsControl
(如果有一个ItemsControl的包装器,那么你也可以避免获得焦点)
<ItemsControl ItemsSource="{Binding Model.XList}" Focusable="False">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>