我有一个动态数据集,它将显示如下数据:
我有大约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>
C#代码:
public DatasetWindow()
{
InitializeComponent();
dtGrid.AutoGenerateColumns = true;
DataSet dataSet = new IZProject.DataAccessLayer.DsDataService().ProbeTest(1);
dtGrid.ItemsSource = dataSet.Tables[0].DefaultView;
}
我完全陷入困境,因为当我尝试在数据网格中渲染300x300即90000个单元时,大约需要1分钟。我试图直接将数据集绑定到DataGrid,我相信它应该是最快的方式。我应该改为使用ObservableCollection吗?
虽然我已经阅读了那些已经告诉我更多列和行的线程肯定会受到性能影响,但我发现很难相信WPF在这样的高级阶段无法处理如此明显的要求不时来。有帮助吗?有什么指针吗? DataGrid是这种布局的最佳选择吗?我应该尝试别的吗?