我在使用(WPF工具包)DataGrid时遇到了性能问题。它包含大约1.000行(只有8列),滚动非常缓慢和滞后。包含DataGrid的窗口的初始加载也需要5-10秒。我做了一些研究(使用谷歌和StackOverflow)但除了打开UI虚拟化的建议之外找不到任何东西。但即使在明确启用滚动之后仍然非常慢。我的DataGrid绑定(bind)到ICollectionView/CollectionViewSource。它在XAML中是这样定义的(列是明确定义的,不是自动生成的):...整个窗口的DataContext设置为包含DataGrid绑定(bind)到的ICollectionView
我在使用(WPF工具包)DataGrid时遇到了性能问题。它包含大约1.000行(只有8列),滚动非常缓慢和滞后。包含DataGrid的窗口的初始加载也需要5-10秒。我做了一些研究(使用谷歌和StackOverflow)但除了打开UI虚拟化的建议之外找不到任何东西。但即使在明确启用滚动之后仍然非常慢。我的DataGrid绑定(bind)到ICollectionView/CollectionViewSource。它在XAML中是这样定义的(列是明确定义的,不是自动生成的):...整个窗口的DataContext设置为包含DataGrid绑定(bind)到的ICollectionView
我想在表格中显示>50000行。哪个控件最好用:DataGrid还是ListView(在详细View中)?这些控件中的哪一个将具有更好的性能? 最佳答案 正如Hans在对原始问题的评论中所说,它们的性能都将很糟糕,仅次于您的用户肯定会在同时显示如此多的数据行时感到不快.但如果这在您的应用程序中是不可避免的(并且您提供了非常的搜索功能),那么您应该强烈考虑使用虚拟模式选项,无论哪种控制你决定使用。这意味着您必须提供自己的数据管理操作,而不是依赖控件为您完成。优点是事情要快得多。作为documentation说:Virtualmodei
我想在表格中显示>50000行。哪个控件最好用:DataGrid还是ListView(在详细View中)?这些控件中的哪一个将具有更好的性能? 最佳答案 正如Hans在对原始问题的评论中所说,它们的性能都将很糟糕,仅次于您的用户肯定会在同时显示如此多的数据行时感到不快.但如果这在您的应用程序中是不可避免的(并且您提供了非常的搜索功能),那么您应该强烈考虑使用虚拟模式选项,无论哪种控制你决定使用。这意味着您必须提供自己的数据管理操作,而不是依赖控件为您完成。优点是事情要快得多。作为documentation说:Virtualmodei
一问题的发现最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理。于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里。调试发现,点击TextBox时,事件处理方法未执行。二问题的原因通过查阅微软官方文档了解到问题原因。附上文档链接:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-3.5/ms750580(v=vs.90)TextBox内置了处理MouseDown事件的方法,其内部的方法处理完后将事件标记为Handled。因此,从T
我有一些动态填充项目的WPF列表框。像这样:ListBox.Items.Add(newListBoxItem{Content=newCheckBox{IsChecked=true,Content="string_string"});问题出在复选框内容上。它在GUI上显示为“stringstring”...如何转义“_”符号?(我动态获取字符串) 最佳答案 您可以在TextBlock中添加文本并将该TextBlock放入您的Chekbox中,TextBlock不支持_助记符。这就是我的意思,在xaml中,但您可以轻松地将其转换为代码:
我有一些动态填充项目的WPF列表框。像这样:ListBox.Items.Add(newListBoxItem{Content=newCheckBox{IsChecked=true,Content="string_string"});问题出在复选框内容上。它在GUI上显示为“stringstring”...如何转义“_”符号?(我动态获取字符串) 最佳答案 您可以在TextBlock中添加文本并将该TextBlock放入您的Chekbox中,TextBlock不支持_助记符。这就是我的意思,在xaml中,但您可以轻松地将其转换为代码:
我的WPF4.0应用程序中有一个宽度为600、高度为80的TextBlock。我想在运行时截断文本并在末尾附加...。我该如何处理它? 最佳答案 它是文本框还是文本block?如果是TextBlock,那么你可以使用:在C#中:myTextBlock.TextTrimming=TextTrimming.CharacterEllipsis;或在XAML中:但如果它是一个文本框,那么据我所知,您可以将ValueConverter绑定(bind)到文本框并将截断的文本(带点:...)返回到文本框但保存将全文放入文本框的Tag属性中。以免您
我的WPF4.0应用程序中有一个宽度为600、高度为80的TextBlock。我想在运行时截断文本并在末尾附加...。我该如何处理它? 最佳答案 它是文本框还是文本block?如果是TextBlock,那么你可以使用:在C#中:myTextBlock.TextTrimming=TextTrimming.CharacterEllipsis;或在XAML中:但如果它是一个文本框,那么据我所知,您可以将ValueConverter绑定(bind)到文本框并将截断的文本(带点:...)返回到文本框但保存将全文放入文本框的Tag属性中。以免您
我想让用户在点击按钮后选择他们的选项。例如,我更喜欢在模态弹出窗口中显示两个按钮“立即重启”和“稍后重启”。使用MessageBox对我来说不是解决方案,因为它不允许用户更改按钮的标题。 最佳答案 您需要创建一个新的Window类。您可以随心所欲地设计它。您可以像这样以模态方式创建和显示窗口:MyWindowpopup=newMyWindow();popup.ShowDialog();您可以为您的结果值添加自定义属性,或者如果您只有两个可能的结果(+可能不确定,这将是null),您可以设置窗口的DialogResult属性之前关闭它