我有一个图形项和矩阵项。图形项目是画布,我在其中绘制椭圆和线条。在矩阵项 I 中包含矩阵。我使用了这个库 (xmlns:dg2d =“clr命名空间:DataGrid2DLibrary;程序集= DataGrid2DLibrary”) (http://www.mediafire.com/?tm1arm230rr1tgi)将我的二维矩阵绑定到数据网格。但我注意到,在程序刚启动后我单击矩阵项之前,我的意思是首先使用图表。 Canvas 绘制速度非常快,但是当我单击矩阵项并且 itemsource 工作后,当我再次返回图形时,它绘制得非常慢。另外,我注意到 itemssource 之后有很多内存。
在此代码中,我尝试将 ItemsSource 设为 null 并清除内存
MainWindow.xaml.cs
private void MatrixData(object sender, RoutedEventArgs e)
{
if (MatrixMenu.IsChecked)
{
if (DrawingCanvas_Undirected.Visibility == Visibility.Visible || DrawingCanvas_Directed.Visibility == Visibility.Visible)
{
GraphItem.Visibility = Visibility.Visible;
}
MatrixItem.Visibility = Visibility.Collapsed;
MatrixAdj.ItemsSource2D = null;
MatrixInc.ItemsSource2D = null;
MatrixMenu.IsChecked = false;
GC.Collect();
}
主窗口.xaml
<Grid x:Name="MatrixItem" Visibility ="Collapsed">
<Grid.RowDefinitions>
<RowDefinition Height="149*"/>
<RowDefinition Height="285*"/>
</Grid.RowDefinitions>
<Canvas>
<dg2d:DataGrid2D x:FieldModifier="public" x:Name="MatrixAdj"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
Canvas.Left="411" Canvas.Top="20"
Width="350" Height="289"
AlternationCount="2"
UseModifiedDataGridStyle="True"
ItemsSource2D="{Binding Int2DList}"
RowBackground="White"
AlternatingRowBackground="#ebebeb"
Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Center" />
</Canvas>
<Canvas Margin="4,2,-4,265" Grid.RowSpan="2">
<dg2d:DataGrid2D x:FieldModifier="public" x:Name="MatrixInc"
Canvas.Left="19" Canvas.Top="20"
Width="350" Height="289"
AlternationCount="2"
UseModifiedDataGridStyle="True"
ItemsSource2D="{Binding Int2DList}"
RowBackground="White"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
AlternatingRowBackground="#ebebeb"
Background="Transparent" Grid.RowSpan="2" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Canvas>
</Grid>
所以问题是:点击矩阵项后如何保存画布绘制速度?
通过在数据网格不活动时删除它来解决(从画布子元素中删除数据网格)