当我们使用ComboBox和VirtualizingStackPanel时,我们的Silverlight应用程序遇到了一个问题。当ComboBox项的宽度明显大于控件本身时,以及只有在滚动后(即在加载时不可见)时,才会出现此问题。有了相当长的项目列表,ComboBox滚动就会变得疯狂。
在谷歌搜索时,我只能看到一条描述我们正在经历的事情的评论,但我没有找到任何解决办法。这似乎是一个bug,但也许我们做错了什么,或者有工作围绕。标记很简单,大致如下所示
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>顺便说一下,ComboBoxItems是简单的文本。没有图形或其他物体。
发布于 2016-02-09 18:26:03
我遇到了同样的问题,最终需要为组合框定义项目模板,并强制项目的宽度与外部列宽度的宽度相匹配。这使得文本换行为多行,但可以将其更改为使用TextTrimming="WordEllipsis"来修剪文本项。
<Grid>
<Grid.ColumnDefinitions>
...
<ColumnDefinition Width="..." x:Name="cbColumn" />
</Grid.ColumnDefinitions>
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Width="{Binding ActualWidth, ElementName=cbColumn}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>在我的例子中,我并不总是知道组合框需要的大小,所以这就是为什么我使用到网格列的绑定。如果您知道您希望组合框的大小,那么在项目模板中直接设置宽度可能也同样好。
https://stackoverflow.com/questions/35295780
复制相似问题