小编and*_*dyp的帖子

WPF Toolkit DataGrid滚动性能问题 - 为什么?

我在(WPF Toolkit)DataGrid中遇到了性能问题.它包含大约1.000行(只有8列),滚动速度非常慢且滞后.此外,包含DataGrid的Window的初始加载需要5-10秒.

我做了一些研究(使用谷歌和StackOverflow)但除了打开UI虚拟化的建议之外找不到任何东西.但即使在明确表示滚动仍然非常缓慢之后.

我的DataGrid绑定到ICollectionView/CollectionViewSource.它是在XAML中定义的(列是明确定义的,不是自动生成的):

    <tk:DataGrid x:Name="dataGrid" 
                 ItemsSource="{Binding Path=Bookings}" 
                 AutoGenerateColumns="False" 
                 Grid.Row="1" 
                 EnableRowVirtualization="True" 
                 EnableColumnVirtualization="True"
                 VirtualizingStackPanel.IsVirtualizing="True"
                 VirtualizingStackPanel.VirtualizationMode="Recycling">
            ... 
    </tk:DataGrid>
Run Code Online (Sandbox Code Playgroud)

整个Window的DataContext设置为包含DataGrid绑定的ICollectionView的类的实例.

我发现的每篇博客或论坛帖子都赞扬了DataGrid的表现,所以我显然做了一些严重的错误.由于我对WPF很新,特别是对于DataGrid,我不知道如何改进它.有人对我有什么建议吗?您对DataGrid的体验如何?我究竟做错了什么?

编辑:只需按照问题的建议将所有列的宽度设置为"自动".这并没有改变糟糕的滚动性能.另外,我没有使用DataGridTemplateColumns(只是一些DataGridTextColumns和两个DataGridComboBoxColumns).

Edit2:我用Snoop查看我的应用程序.我所看到的表明虚拟化确实在起作用(只有19行,而不是一千行).但每行包含52个元素,因此这些元素总计超过千个元素.可能是一个问题?

非常感谢!

c# wpf performance datagrid

24
推荐指数
2
解决办法
2万
查看次数

如何将类内的进度报告给BackgroundWorker?

我的WinForm调用一个执行一些复制操作的类.我想在表格上展示这方面的进展.

我想使用Backgroundworker,但我不知道如何报告从课程到表单的进度(/ backgroundworker)

c# backgroundworker

12
推荐指数
2
解决办法
2万
查看次数

Roslyn SDK预览中的代码格式

在早期版本(Roslyn CTP)中,我使用以下代码来格式化我生成的代码,它工作得很好:

SyntaxNode.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot()
Run Code Online (Sandbox Code Playgroud)

使用新的Roslyn版本它不再具有,那么新版本(SDK预览版)中上述代码的等价物是什么?

c# roslyn

12
推荐指数
1
解决办法
3747
查看次数

WillCascadeOnDelete(true)这段关系的哪一部分?

这就是我今天所拥有的:

modelBuilder.Entity<User>()
    .HasOptional(p => p.DealDevice)
    .WithRequired(c => c.User)
    .WillCascadeOnDelete(false);
Run Code Online (Sandbox Code Playgroud)

DealDevice如果用户被删除,我想要删除相关的行,这样我就可以删除用户并让所有相关信息消失.

我可以改变WillCascadeOnDelete(false)WillCascadeOnDelete(true)或将是删除用户如果交易被删除?

c# entity-framework ef-code-first

11
推荐指数
1
解决办法
5022
查看次数

实体框架,代码优先.调用时不会填充子对象

我首先要掌握EF代码.当我在代码中调用它时,我的域模型设计似乎不支持对象的自动"填充"子项.

模型:

public class Car
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required,MaxLength(10)]
    public string Registration { get; set; }

    [MaxLength(30)]
    public string Make { get; set; }

    [MaxLength(45)]
    public string Model { get; set; }

    [Required]
    public Coordinates Coordinates { get; set; }

    [Required]
    public Client Client { get; set; }                    
}

public class Coordinates
{
    [Key, ForeignKey("Car")]
    public int Id { get; set; }

    public double Latitude { get; set; }

    public double Longitude { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

9
推荐指数
1
解决办法
2万
查看次数

线性渐变画笔淡化WPF

我有一个刷子,用于为标题的背景着色.我喜欢画笔的外观,但希望它在底部三分之一处淡出透明.任何想法如何做到这一点?

<LinearGradientBrush 
  x:Key="HeaderBackgroundBrush" 
  EndPoint=".5,1" 
  StartPoint="1,0">
  <GradientStop Color="#006699" Offset="1"/>
  <GradientStop Color="#80A8CC" Offset="0.5"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)

c# wpf graphics gradient brushes

7
推荐指数
2
解决办法
2万
查看次数

如何得到南希谈判员的回应?

我有一个NancyContext,我需要Response根据请求的正确内容协商者获得一个正文.我想我可以使用Nancy的Negotiator类来添加模型,设置状态和其他东西.但是,我需要返回一个子类型Response.那么,我可以使用什么来构建响应Negotiator

这是我的方法:

public Response ConvertToHttpResponse(Exception exception, NancyContext context)
{
    var negotiator = new Negotiator(context)
        .WithStatusCode(HttpStatusCode.BadRequest)
        .WithReasonPhrase(exception.Message);

    return ???;
}
Run Code Online (Sandbox Code Playgroud)

c# content-negotiation nancy

6
推荐指数
1
解决办法
8200
查看次数

在AngularJS $ http中传递日期到ASP.NET Web Api

将js Date对象传递给我的ASP.NET Web Api控制器时,我总是得到null.我试过传递字符串,字符串数组,时间跨度 - 所有这些工作,除了日期.检查请求时,日期传递如下:

date:"2014-03-13T15:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)

角度:

$http({ 
    method: 'get', 
    url: 'api/stuff', 
    params: {
       date: new Date()
    }
);
Run Code Online (Sandbox Code Playgroud)

在我的ApiController中:

public IEnumerable<StuffResponse> Get(
    [FromUri] DateTime? date
){ ... }
Run Code Online (Sandbox Code Playgroud)

通过日期的正确方法是什么?

javascript c# asp.net asp.net-web-api angularjs

5
推荐指数
2
解决办法
8914
查看次数

获取 ReferenceLocation 的符号

我正在使用SymbolFinder来在我的解决方案中查找对某个类型的所有引用,如下所示:

ISymbol typeOfInterest = compilation.GetTypeByMetadataName(
    "System.Reflection.PropertyInfo");
var references = SymbolFinder.FindReferencesAsync(typeOfInterest, solution).Result;
foreach (var reference in references)
{
    // reference.Locations => symbol?
}
Run Code Online (Sandbox Code Playgroud)

这部分工作正常,SymbolFinder返回正确ReferenceLocations(手动检查)。我实际上对这些位置的符号感兴趣,以获取有关引用的更多(语义)信息,因此我可以对其进行过滤/使用它(例如,仅适用于属性)。

人们似乎对罗斯林很少公开信息却和我找不到任何工作与结果SymbolFinder的SDK预览的样本英寸 所以这是我的问题:是否有可能获得对应于 a 的符号ReferenceLocation?如何?

c# roslyn

5
推荐指数
1
解决办法
1626
查看次数

B树节点中的链表优于数组吗?

我想为我的数据库实现 B 树索引。

我读了很多数据结构和算法书籍来学习如何做。所有实现都使用数组来保存数据和子索引。

现在我想知道:B树节点中的链表优于数组吗?我想过一些想法:

  1. 分割节点时,复制操作将比数组更快。

  2. 插入数据时,如果将数据插入到数组的中间或头部,速度会比插入到链表低。

algorithm b-tree data-structures

5
推荐指数
1
解决办法
2076
查看次数