Xaml WinRT中combobox的奇怪行为
WinRT中的组合框具有CarouselPanel类型的默认ItemsPanel。这使Windows 8.1应用程序在滚动组合框项目时具有“无限循环”。 如果你不想要这种行为,有很多博客文章解释如何“修复它” 例如: 或: 这个解决方案的问题是,在组合框的第一项上会出现奇怪的行为。 如何复制:Xaml WinRT中combobox的奇怪行为,xaml,combobox,windows-runtime,windows-8.1,Xaml,Combobox,Windows Runtime,Windows 8.1,WinRT中的组合框具有CarouselPanel类型的默认ItemsPanel。这使Windows 8.1应用程序在滚动组合框项目时具有“无限循环”。 如果你不想要这种行为,有很多博客文章解释如何“修复它” 例如: 或: 这个解决方案的问题是,在组合框的第一项上会出现奇怪的行为。 如何复制: 创建新的空白Windows 8.1应用程序 在mainpage.xaml中输入: <TimePicker Time="0" HorizontalAlignment="Center" Vertica
- 创建新的空白Windows 8.1应用程序
- 在mainpage.xaml中输入:
<TimePicker Time="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
- 创建一个style.xaml资源字典,如下所示:
<Style TargetType="ComboBox"> <Style.Setters> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <StackPanel Orientation="Vertical"/> </ItemsPanelTemplate> </Setter.Value> </Setter> </Style.Setters> </Style>
- 现在启动应用程序,从列表中选择一项(例如“05”分钟),然后在同一下拉列表中选择第一项(例如“00”分钟)。下拉控件中的文本现在将消失
有人知道怎么解决这个问题吗?如果我将combobox itemspanel的样式改回CarouselPanel,它会工作(当然是无限循环)。刚刚用VirtualzingStackPanel代替StackPanel纠正了这个问题。 我们必须设置一个尺寸,否则它会占据整个屏幕的宽度
我们没有尝试获得更灵活的解决方案,因为我们还不需要它
希望它能帮助您StackPanel只是不使用Comobox可能的解决方案是将其更改为虚拟化StackPanel,但您必须绑定到父级,否则它将延伸到屏幕宽度
<ComboBox Name="ReasonComboBox"">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Width="{Binding ActualWidth, ElementName=ReasonComboBox}"/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
我遇到了完全相同的问题。你解决了这个问题吗?