Вам придется шаблонизировать DataGridRow. Сначала добавьте временный DataGridRow в качестве дочернего элемента вашей DataGrid, поместите курсор на этот элемент, а затем в окне свойств перейдите в Разное -> Шаблон, щелкните маленький квадрат справа от него и выберите «Преобразовать в новый ресурс». , Это создаст новый шаблон DataGridRow в вашем блоке ресурсов, который затем можно будет установить с помощью стиля. (По какой-то причине он также отображает заголовки строк на моем компьютере, поэтому либо удалите его из шаблона, либо просто установите `RowHeaderWidth = '0' в вашей DataGrid).
Чтобы сделать индикатор выполнения видимым, просто добавьте его в качестве первого дочернего элемента SelectiveScrollingGrid
в шаблоне (если вы не удалили первый столбец, вам также необходимо установить для него Grid.Column 1).
Соберите все это вместе, и ваша декларация DataGrid будет выглядеть примерно так (я добавил ItemsSource
привязку, которую вы, вероятно, захотите удалить):
<DataGrid x:Name="MbpDg" ItemsSource="{Binding Items}" HeadersVisibility="Column" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" HorizontalAlignment="Left" ColumnHeaderHeight="20" Height="221" Margin="0,1,0,0" VerticalAlignment="Top" Width="164" CanUserResizeRows="False" GridLinesVisibility="None">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding [2]}" Header="Size" Width="50"/>
<DataGridTextColumn Binding="{Binding [0]}" Header="Price" Width="50"/>
<DataGridTextColumn Binding="{Binding [1]}" Header="Qty" Width="30*"/>
</DataGrid.Columns>
</DataGrid>
Установите стиль в вашем блоке ресурсов:
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Template" Value="{DynamicResource DataGridRowControlTemplate1}" />
</Style>
А вот и сам шаблон:
<ControlTemplate x:Key="DataGridRowControlTemplate1" TargetType="{x:Type DataGridRow}">
<Border x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<SelectiveScrollingGrid SelectiveScrollingOrientation="None">
<SelectiveScrollingGrid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</SelectiveScrollingGrid.RowDefinitions>
<ProgressBar HorizontalAlignment="Stretch" Value="{Binding [2]}" Minimum="0" Maximum="100"/>
<DataGridCellsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<DataGridDetailsPresenter Grid.Row="1" Visibility="{TemplateBinding DetailsVisibility}" />
</SelectiveScrollingGrid>
</Border>
</ControlTemplate>
Результат: