如何使组合框显示绑定数据的一部分

本文关键字:数据 一部分 绑定 显示 何使 组合 | 更新日期: 2023-09-27 18:14:26

我目前有一个从数据库绑定到数据集的comboBox。问题是,当我想使用组合框显示数据集时,它需要大约8秒才能将完整的数据集加载到组合框中。想问是否有任何方法显示只有前几个数据从数据集在组合框,这样它是快得多?

我目前使用另一个线程加载数据到comboBox和使用DisplayMemberPath显示数据集的内容到comboBox。

欢迎提出任何建议!:)

如何使组合框显示绑定数据的一部分

直接回答你的问题——你需要实现Data或UI虚拟化(就像Sheep在他的回答中提出的那样)。看看这个答案,了解更多的细节和解释:https://stackoverflow.com/a/1453818/786055

但一般来说,从可用性的角度来看,使用ComboBox来显示大量数据并不是一个最好的决定。考虑使用自动完成文本框或类似的东西(像这里描述的或类似的东西-有很多选项)

嗨,这个问题的解决方法其实很简单。您需要做的就是在xaml代码中添加以下样式:

<Style TargetType="ComboBox">
    <Setter Property="ItemsPanel">
      <Setter.Value>
        <ItemsPanelTemplate>
          <VirtualizingStackPanel/>
        </ItemsPanelTemplate>
      </Setter.Value>
    </Setter>
  </Style>

这里的代码将使用VirtualizingStackPanel,它计算可见项的数量并仅为可见项创建视觉效果!因此,当用户想要显示组合框时,当用户打开它时,会及时出现下拉框。

如果您面临下拉菜单由于显示项目的宽度而改变其宽度的问题,您可能需要使用以下样式来绑定到comboBox的宽度:

            </Style>
            <Style TargetType="{x:Type Popup}">
                <Setter Property="Width" Value="{Binding ElementName=comboBoxName, Path=ActualWidth}"/>
            </Style>
编辑:

多亏了morimer,我看到了下面的博客,在那里我了解了更多虚拟化的工作原理。优秀的参考!