在WPF&&amp ;;中定制组合框winforms申请

时间:2015-02-19 15:32:38

标签: c# .net wpf winforms combobox

在我的wpf应用程序中,我有这个问题。此组合框的项目源包含20000个元素

 <ComboBox   Height="30" ItemsSource="{Binding MyTheme}" DisplayMemberPath="theme_libelle" />

问题是当我选择它时,即使项目源是一个简单的字符串列表,也需要花费很多时间才能打开。

我尝试使用其面板的虚拟化,但我得到了相同的结果。当我用WinForms ComboBox替换它时,我得到了一个完美的结果:它需要一秒钟才能打开。

<WindowsFormsHost >
<WinForms:ComboBox DataSource="MyTheme" SelectedIndex="0"></WinForms:ComboBox>
    </WindowsFormsHost>

我需要知道如何实现一个继承自winforms combobox的自定义组合框,并实现所需的依赖属性和用于绑定的方法WPF ComboBox

任何建议?

1 个答案:

答案 0 :(得分:3)

当我复制您的条件并将20000个项目添加到组合框时,打开组合框大约需要27秒。

使用如下所示的VirtualizingStackPanel时,组合框会在不到1秒的时间内打开。

<ComboBox ItemsSource="{Binding LotsOfItems}"
          MinWidth="100">
   <ComboBox.ItemsPanel>
      <ItemsPanelTemplate>
         <VirtualizingStackPanel />
      </ItemsPanelTemplate>
   </ComboBox.ItemsPanel>
</ComboBox>

正如this answer中所述,如果虚拟化面板无法正常工作,则您运行的环境中很可能存在问题。