WPF Listview空文本

Ale*_*aum 6 .net c# wpf listview

如何在WPF Listview中使用GridView显示一个空文本(如在ASP.net中),例如"请选择一个人"或"0个项目成立"?

Nir*_*Nir 12

这个XAML会做类似的事情,它有一个可见的ListView显示一个列表和一个隐藏的消息,并在列表为空时使用触发器切换可见性.

下面的代码适用于任何IList或ICollection,但是如果您希望在添加或删除需要使用ObservableCollection或类似项目的项目时更新显示,则可以像任何数据源一样使用相同的技术.

ContentPresenter存在,因为您只能在模板或样式中使用触发器,因此我们将控件放在DataTemplate中并使用ContentPresenter来显示它.

如果您希望消息显示在ListView中,那么您需要做的就是删除隐藏ListView的Setter,并向TextBlock添加一些边距,以将其放置在ListVIew中的第一个项目所在的位置.

<ContentPresenter Content="{Binding}">
    <ContentPresenter.ContentTemplate>
        <DataTemplate>
            <Grid>
                <ListView Name="list" ItemsSource="{Binding MyList}"/>
                <TextBlock Name="empty" Text="No items found" Visibility="Collapsed"/>
            </Grid>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding MyList.Count}" Value="0">
                    <Setter TargetName="list" Property="Visibility" Value="Collapsed"/>
                    <Setter TargetName="empty" Property="Visibility" Value="Visible"/>
                </DataTrigger>                        
            </DataTemplate.Triggers>
        </DataTemplate>
    </ContentPresenter.ContentTemplate>
</ContentPresenter>
Run Code Online (Sandbox Code Playgroud)