ComboBox + VirtualizingStackPanel 宽度错误?
ComboBox + VirtualizingStackPanel width bug?
我们的 Silverlight 应用程序在使用 ComboBox 和 VirtualizingStackPanel 时遇到问题。当 ComboBox 项目的宽度明显宽于控件本身并且项目仅在滚动后可见(即在加载时不可见)时,就会出现问题。对于相当长的项目列表,组合框滚动变得疯狂。
在谷歌上搜索了一下,我只能看到一条描述我们遇到的问题的评论,但我找不到解决办法。这似乎是一个错误,但也许我们做错了什么或者有解决方法。标记很简单,大致如下所示
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
顺便说一句,ComboBoxItems 是简单的文本。没有图形或其他对象。
我 运行 遇到了同样的问题,最终需要为组合框定义一个项目模板,并强制项目的宽度与外部列宽的宽度相匹配。这会使文本换行到多行,但您可以将其更改为使用 TextTrimming="WordEllipsis"
到 trim 文本项。
<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>
在我的例子中,我并不总是知道组合框需要多大,所以这就是为什么我使用绑定到网格列的原因。如果您知道组合框的尺寸,直接在项目模板中设置宽度可能同样有效。
我们的 Silverlight 应用程序在使用 ComboBox 和 VirtualizingStackPanel 时遇到问题。当 ComboBox 项目的宽度明显宽于控件本身并且项目仅在滚动后可见(即在加载时不可见)时,就会出现问题。对于相当长的项目列表,组合框滚动变得疯狂。
在谷歌上搜索了一下,我只能看到一条描述我们遇到的问题的评论,但我找不到解决办法。这似乎是一个错误,但也许我们做错了什么或者有解决方法。标记很简单,大致如下所示
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
顺便说一句,ComboBoxItems 是简单的文本。没有图形或其他对象。
我 运行 遇到了同样的问题,最终需要为组合框定义一个项目模板,并强制项目的宽度与外部列宽的宽度相匹配。这会使文本换行到多行,但您可以将其更改为使用 TextTrimming="WordEllipsis"
到 trim 文本项。
<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>
在我的例子中,我并不总是知道组合框需要多大,所以这就是为什么我使用绑定到网格列的原因。如果您知道组合框的尺寸,直接在项目模板中设置宽度可能同样有效。