停止ComboBox从滚动到顶部

时间:2015-02-04 17:06:51

标签: c# wpf

WPF中,有没有办法禁用每当用户到达列表末尾时自动滚动到列表顶部的ComboBox的滚动行为?我宁愿列表停留在最后,用户必须手动滚动回到顶部。

继承了ComboBox

的XAML
 <ComboBox x:Name="CellProviderCombo" HorizontalAlignment="Left" Height="65" Margin="14,405,0,0" VerticalAlignment="Top" Width=" 327" Header="Cell Provider" PlaceholderText="Choose Cell Provider" DataContext="{StaticResource GlobalVars}" ItemsSource="{Binding GlobalShopInfo.CellProviders}" DisplayMemberPath="Name" SelectedValuePath="Name" IsDoubleTapEnabled="False"/>

正如我所说,如果你滚过组合框中的最后一个元素,它只会从底部开始,滚动条会自动回到顶部。

1 个答案:

答案 0 :(得分:5)

原来,WPF中的ComboBox与Windows应用ComboBox中使用的Windows.UI.Xaml不同。

Windows Apps中使用的ComboBox使用Carousel代替StackPanel来显示其项目。其中一个影响是当你到达列表的末尾时,它就会循环回到顶部。解决方案是手动将ItemsPanelTemplate更改为StackPanel,如下所示:

<ComboBox x:Name="MyComboBox"> //Add other properties in this line as well if needed
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

希望这可以帮助任何有类似问题的人。