首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ComboBox + VirtualizingStackPanel宽度错误?

ComboBox + VirtualizingStackPanel宽度错误?
EN

Stack Overflow用户
提问于 2016-02-09 15:26:18
回答 1查看 221关注 0票数 2

当我们使用ComboBox和VirtualizingStackPanel时,我们的Silverlight应用程序遇到了一个问题。当ComboBox项的宽度明显大于控件本身时,以及只有在滚动后(即在加载时不可见)时,才会出现此问题。有了相当长的项目列表,ComboBox滚动就会变得疯狂。

在谷歌搜索时,我只能看到一条描述我们正在经历的事情的评论,但我没有找到任何解决办法。这似乎是一个bug,但也许我们做错了什么,或者有工作围绕。标记很简单,大致如下所示

代码语言:javascript
复制
<ComboBox>
  <ComboBox.ItemsPanel>
    <ItemsPanelTemplate>
      <VirtualizingStackPanel />
    </ItemsPanelTemplate>
  </ComboBox.ItemsPanel>
</ComboBox>

顺便说一下,ComboBoxItems是简单的文本。没有图形或其他物体。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 18:26:03

我遇到了同样的问题,最终需要为组合框定义项目模板,并强制项目的宽度与外部列宽度的宽度相匹配。这使得文本换行为多行,但可以将其更改为使用TextTrimming="WordEllipsis"来修剪文本项。

代码语言:javascript
复制
<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>

在我的例子中,我并不总是知道组合框需要的大小,所以这就是为什么我使用到网格列的绑定。如果您知道您希望组合框的大小,那么在项目模板中直接设置宽度可能也同样好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35295780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档