C# WPF组合框下拉菜单冻结

C# WPF组合框下拉菜单冻结,c#,wpf,xaml,combobox,.net-2.0,C#,Wpf,Xaml,Combobox,.net 2.0,动态填充WPF组合框并单击它之后,我遇到了一个短暂的延迟(3-5秒)。在我们的项目中,这是不可接受的 如何动态修改组合框项目,而不在之后生成下拉冻结? 我正在使用.NET 2.0,无法升级 我曾经尝试过使用ItemSource绑定和从Dispatcher分离,但这并没有帮助。当通过键盘进入组合框时,没有延迟(在这种情况下,下拉列表不会显示) 这里有一个简单的工作示例。为了重现延迟 单击按钮,然后单击组合框 再来一次 XAML <Grid> <Grid.RowDefini

动态填充WPF组合框并单击它之后,我遇到了一个短暂的延迟(3-5秒)。在我们的项目中,这是不可接受的

如何动态修改组合框项目,而不在之后生成下拉冻结?

我正在使用.NET 2.0,无法升级

我曾经尝试过使用ItemSource绑定和从Dispatcher分离,但这并没有帮助。当通过键盘进入组合框时,没有延迟(在这种情况下,下拉列表不会显示)

这里有一个简单的工作示例。为了重现延迟

  • 单击按钮,然后单击组合框
  • 再来一次
  • XAML

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <ComboBox Grid.Row="0" Name="comboBox"/>
        <Button   Grid.Row="1" Click="button_Click">Add Items</Button>
    </Grid>
    

    在输出中是否有要调试的内容?否,调试输出为空。我已在.net framework 4.6.2中尝试了上述代码,并在瞬间显示结果。另一个选项是页面初始化后绑定组合(InitializeComponent)并将组合设置为隐藏,在按钮上单击“使组合可见”。这不是一个选项。在我的实际项目中,我们坚持使用.NET2.0,组合框是动态刷新的。请记住,这只是一个很小的例子。我将
    VirtualisingStackPanel
    作为
    ComboBox.ItemsPanel
    查看过,但它仅在.NET 3之后才可用。那么,如果你可以,那么你可以为你的数据分页吗?将前100条记录加载到下拉列表中,然后在用户滚动下拉列表时加载更多记录。输出中是否有要调试的内容?否,调试输出为空。我在.net framework 4.6.2中尝试了上述代码,并在瞬间显示结果。另一个选项是页面初始化后绑定组合(InitializeComponent)并将组合设置为隐藏,在按钮上单击“使组合可见”。这不是一个选项。在我的实际项目中,我们坚持使用.NET2.0,组合框是动态刷新的。请记住,这只是一个很小的例子。我将
    VirtualisingStackPanel
    作为
    ComboBox.ItemsPanel
    查看过,但它仅在.NET 3之后才可用。那么,如果你可以,那么你可以为你的数据分页吗?将前100条记录加载到下拉列表中,然后在用户滚动下拉列表时加载更多记录。
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    
        private void button_Click(object sender, RoutedEventArgs e)
        {
            comboBox.Items.Clear();
            comboBox.Items.Add("Item 1");
            comboBox.Items.Add("Item 2");
            comboBox.Items.Add("Item 3");
        }
    }