Вы можете привязать к свойству DataGrid
HasItems
и изменить шаблон:
<DataGrid.Style>
<Style TargetType="DataGrid">
<Style.Triggers>
<DataTrigger Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}" Value="false">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGrid">
<TextBlock Text="No data..." />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
Никогда не будет отображаться никаких подробностей строк, если в DataGrid
нет строк.так что этот подход не будет работать.
Редактировать: Если вы хотите отображать заголовки столбцов, даже если строк нет, вы должны включить в шаблон DataGridColumnHeadersPresenter
:
<DataTrigger Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}" Value="false">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGrid">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter" Grid.Column="1" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Column}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
<TextBlock Text="No data..." Grid.Row="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>