显示消息'没有数据'当WPF DataGrid没有行

时间:2018-05-08 12:19:19

标签: c# wpf .net-3.5 wpfdatagrid

我有一个WPF DataGrid我要在其中显示一条消息'没有数据'当其中没有记录时。所以我在pchajer提供的答案中完成了here所解释的内容,但是当datagrid显示没有数据时,消息未显示。我认为我遇到了AncestorType的问题,我想我没有正确指定,但我不知道如何解决这个问题。我根本不明白AncestorType的工作原理......

在我的代码下面:

<Window x:Class="My.Apps.WPF.Test.wMain"
        xmlns:local="clr-namespace:My.Apps.WPF.Test">

<dg:DataGrid.Style>
    <Style TargetType="dg:DataGrid">
        <Setter Property="RowDetailsVisibilityMode" Value="Collapsed"></Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding DataContext.IsRecordExists, 
                                   RelativeSource={RelativeSource Mode=FindAncestor,
                                                                  AncestorType={x:Type local:wMain}}}" Value="false">
                <Setter Property="RowHeight" Value="0"></Setter>
                <Setter Property="RowDetailsVisibilityMode" Value="Visible"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</dg:DataGrid.Style>

<!-- Missatge quan no hi ha documents pel procés seleccionat -->
<dg:DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <StackPanel>
            <TextBlock Text="No hi ha documents disponibles pel procés seleccionat" Width="400"></TextBlock>
        </StackPanel>
    </DataTemplate>
</dg:DataGrid.RowDetailsTemplate>

</Window>

代码隐藏(XAML.cs):

namespace My.Apps.WPF.Test
{
    public partial class wMain : ViewBaseControl
    {

    }
}

1 个答案:

答案 0 :(得分:2)

您可以绑定到DataGrid的{​​{1}}属性并更改模板:

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