在 WPF && winforms 应用程序中自定义组合框
Customizing a combobox in WPF && winforms application
在我的 wpf 应用程序中我遇到了这个问题。此组合框的项目源包含 20000 个元素
<ComboBox Height="30" ItemsSource="{Binding MyTheme}" DisplayMemberPath="theme_libelle" />
问题是当我 select 它时,即使项目源是一个简单的字符串列表,打开它也需要很多时间。
我尝试使用其面板的虚拟化,但得到了相同的结果。当我用 WinForms ComboBox
替换它时,我得到了一个完美的结果:打开它需要一秒钟。
<WindowsFormsHost >
<WinForms:ComboBox DataSource="MyTheme" SelectedIndex="0"></WinForms:ComboBox>
</WindowsFormsHost>
我需要知道如何实现自定义的组合框,它继承自 winforms combobox
并实现绑定中所需的依赖属性和方法作为 WPF ComboBox
有什么建议吗?
当我复制您的条件并将 20000 个项目添加到组合框时,打开组合框大约需要 27 秒。
当使用如下所示的 VirtualizingStackPanel
时,组合框会在不到 1 秒的时间内打开。
<ComboBox ItemsSource="{Binding LotsOfItems}"
MinWidth="100">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
如所述,如果虚拟化面板不工作,很可能是您所在的环境有问题运行。
在我的 wpf 应用程序中我遇到了这个问题。此组合框的项目源包含 20000 个元素
<ComboBox Height="30" ItemsSource="{Binding MyTheme}" DisplayMemberPath="theme_libelle" />
问题是当我 select 它时,即使项目源是一个简单的字符串列表,打开它也需要很多时间。
我尝试使用其面板的虚拟化,但得到了相同的结果。当我用 WinForms ComboBox
替换它时,我得到了一个完美的结果:打开它需要一秒钟。
<WindowsFormsHost >
<WinForms:ComboBox DataSource="MyTheme" SelectedIndex="0"></WinForms:ComboBox>
</WindowsFormsHost>
我需要知道如何实现自定义的组合框,它继承自 winforms combobox
并实现绑定中所需的依赖属性和方法作为 WPF ComboBox
有什么建议吗?
当我复制您的条件并将 20000 个项目添加到组合框时,打开组合框大约需要 27 秒。
当使用如下所示的 VirtualizingStackPanel
时,组合框会在不到 1 秒的时间内打开。
<ComboBox ItemsSource="{Binding LotsOfItems}"
MinWidth="100">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
如