C#WPF数据绑定DataGrid慢

时间:2017-07-30 23:14:49

标签: c# wpf datagrid

我的代码存在性能问题如下。我正在尝试使用两个DataGrids绑定两个列表。每个List的DataGrid。我需要一个双向绑定。有谁知道为什么?或者有建议吗?

这些是我的课程

    public class Vertices
{
    public int ID { get; set; }
    public double PositionX { get; set; }
    public double PositionY { get; set; }
    public string Description { get; set; }
    public bool IsMap { get; set; }
    public bool IsStartEndPoint { get; set; }
    public bool IsDisplay { get; set; }
    public bool IsExit { get; set; }
    public string TextToSpeech { get; set; }

}

public class Edges
{
    public int ID { get; set; }
    public int SourceVertex { get; set; }
    public int TargetVertex { get; set; }
    public bool IsNormal { get; set; }
    public bool IsElevatorUp { get; set; }
    public bool IsElevatorDown { get; set; }
    public bool IsStairUp { get; set; }
    public bool IsStairDown { get; set; }
}

这是我在XAML中的代码

 <DataGrid x:Name="DataGridVertices" Grid.Row="1" Grid.Column="3" BorderBrush="AliceBlue" BorderThickness="5" AutoGenerateColumns="True" ItemsSource="{Binding AllVerticesList}"  />
    <DataGrid x:Name="DataGridEdges" Grid.Row="2" Grid.Column="3" BorderBrush="AliceBlue" BorderThickness="5" AutoGenerateColumns="True" ItemsSource="{Binding AllEdgesList}"  />

这是我的Codebehind

            this.DataGridVertices.ItemsSource = AllVerticesList;
        this.DataGridEdges.ItemsSource = AllEdgesList;

我正在使用DataGrid.Items.Refresh();

更新DataGrid

谢谢!

1 个答案:

答案 0 :(得分:1)

不是将datagrids与列表绑定,而是使用ObservableCollection绑定它们。 并将绑定模式设置为 TwoWay ,将UpdateSourceTrigger设置为 PropertyChanged 。现在,您不需要刷新Datagrid,也不需要在后面的代码中设置itemsource。只需添加,删除更新集合。它会提高性能。

如果您使用绑定,请不要使用代码隐藏。或者通过代码隐藏管理所有内容,不要使用绑定。使用两者都会影响性能。希望这会有所帮助。