我想制作一个类似这个的DataGrid
现在我做了一个看起来像这样的DataGrid
这是我的代码:
<DataGrid
ScrollViewer.IsDeferredScrollingEnabled="True"
Grid.Row="1"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserSortColumns="True"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"
ItemsSource="{Binding MusicManager.MusicDataManager.Albums.Albums}"
VirtualizingPanel.ScrollUnit="Pixel"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<DataGrid.Columns>
<DataGridTemplateColumn
Width="auto"
MaxWidth="150"
Header="Duration">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<myControls:ImageProviderViewer
Grid.Row="0"
Width="90"
Height="90"
Margin="0"
HidePlaceholderAtBeginning="True"
HighPriorityImage="True">
<myControls:ImageProviderViewer.ImageProvider>
<MultiBinding Converter="{StaticResource AlbumCoverConverter}">
<Binding Path="DataContext" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=UserControl}" />
<Binding Path="Guid" />
</MultiBinding>
</myControls:ImageProviderViewer.ImageProvider>
<myControls:ImageProviderViewer.Placeholder>
<Viewbox Width="85" Height="85">
<Path Fill="Gray" Data="{StaticResource VectorMicrophone}" />
</Viewbox>
</myControls:ImageProviderViewer.Placeholder>
</myControls:ImageProviderViewer>
<TextBlock
Grid.Row="1"
Grid.ColumnSpan="2"
Width="auto"
Margin="2"
FontSize="12"
Text="{Binding Name}"
TextWrapping="Wrap" />
<TextBlock
Grid.Row="2"
Grid.ColumnSpan="2"
Width="auto"
Margin="2"
FontSize="12"
Text="{Binding Artists, Converter={StaticResource AlbumArtistConverter}}"
TextWrapping="Wrap" />
<TextBlock
Grid.Row="3"
Grid.ColumnSpan="2"
Width="auto"
Margin="2"
FontSize="12"
TextWrapping="Wrap">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource AlbumTracksConverter}" StringFormat="Tracks: {0:F2}">
<Binding Path="DataContext" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=UserControl}" />
<Binding Path="Guid" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserSortColumns="True"
EnableColumnVirtualization="True"
EnableRowVirtualization="True">
<i:Interaction.Behaviors>
<services:IgnoreMouseWheelBehavior />
</i:Interaction.Behaviors>
<DataGrid.ItemsSource>
<MultiBinding Converter="{StaticResource AlbumTracksCollectionConverter}">
<Binding Path="DataContext" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=UserControl}" />
<Binding Path="Guid" />
</MultiBinding>
</DataGrid.ItemsSource>
<DataGrid.Columns>
<DataGridTemplateColumn
Width="*"
MaxWidth="500"
Header="Title">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn
Width="*"
MaxWidth="500"
Header="Album">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Album.Name}" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn
Width="auto"
MaxWidth="500"
Header="Duration">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Duration}" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn
Width="auto"
MaxWidth="500"
Header="Year">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Year}" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
但这不是我所需要的。 DataGrid在滚动时非常缓慢。 此外,我需要一次调整所有列的大小。
有没有解决这个问题的方法?