C# WPF-数据矩阵-性能问题数据网格

C# WPF-数据矩阵-性能问题数据网格,c#,wpf,performance,xaml,datagrid,C#,Wpf,Performance,Xaml,Datagrid,我有一个动态数据集,它将显示如下数据: 我有大约300列和300行,客户希望只看到一个小点,颜色将根据输入的值决定 我试着这样做开始: XAML: < Grid x:Name="mainGrid" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Standard"> < DataGrid VirtualizingPanel.IsVirtualizing="Tru

我有一个动态数据集,它将显示如下数据:

我有大约300列和300行,客户希望只看到一个小点,颜色将根据输入的值决定

我试着这样做开始:

XAML:

< Grid x:Name="mainGrid" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Standard">
    < DataGrid VirtualizingPanel.IsVirtualizing="True" ItemsSource="{Binding IsAsync=True}" HorizontalGridLinesBrush="#FFBABEAD" VerticalGridLinesBrush="#FFBABEAD" MaxColumnWidth="7" GridLinesVisibility="All" x:Name="dtGrid" Margin="10,53,10.333,9.667" VirtualizingStackPanel.VirtualizationMode="Standard"  EnableColumnVirtualization="True" EnableRowVirtualization="True" >
        < DataGrid.ColumnHeaderStyle>
            < Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="FontSize" Value="2"></Setter>
                <Setter Property="Background" Value="AliceBlue"></Setter>
            </Style>
        </DataGrid.ColumnHeaderStyle>

            <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <Setter Property="MaxHeight" Value="7"></Setter>
             </Style>


        </DataGrid.RowStyle>
    </DataGrid>

    <Button Content="Button" HorizontalAlignment="Left" Margin="363,21,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>

</Grid>
我完全被卡住了,因为当我尝试在datagrid中渲染300x300即90000个单元格时,大约需要1分钟。我正在尝试将数据集直接绑定到DataGrid,我相信这应该是最快的方法。我应该改为使用可观察采集吗


虽然我读过一些线程,它们告诉我更多的列和行数肯定会对性能造成影响,但我发现很难相信WPF在如此高级的阶段无法处理如此明显的需求。有什么帮助吗?有什么建议吗?DataGrid是这种布局的最佳选择吗?我应该试试别的吗?

你考虑过不使用网格吗?我的意思是,恕我直言,但这与网格的预期用途相去甚远——因此在我看来,更专业的控件(在内容上也容易得多)实际上是有价值的。在这里使用网格看起来像是为了让它适合控件。我认为您的问题源于使用错误的控件。什么过程需要1分钟?这是您获取数据网格中的行或设置项资源的过程吗?@TomTom,您有什么建议吗。我在技术之间跳得太多,所以我不是WPF的专家。您能建议在这种情况下使用什么控件吗@毗湿奴,绑定和渲染需要时间。SQL数据集返回大约需要2秒钟。请编写自己的数据集。就这么简单。这个数据集绝对不是为这个而设计的。
    public DatasetWindow()
    {
        InitializeComponent();
        dtGrid.AutoGenerateColumns = true;
        DataSet dataSet = new IZProject.DataAccessLayer.DsDataService().ProbeTest(1);

       dtGrid.ItemsSource = dataSet.Tables[0].DefaultView;
    }