c# - WPF Listview 空文本

标签 c# .net wpf listview

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

最佳答案

此 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>

关于c# - WPF Listview 空文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019017/

相关文章:

c# - WPF绑定(bind)不工作

c# - 如何在 WPF 中获取以像素为单位的网格列宽?

c# - 为什么 MVC 在 GET 上使用模型状态而不是提供的模型

c# - 多线程 session 后线程不会恢复

c# - 如何在 WPF 中为图像缩放变化设置动画?

css - 我删除了 _viewstart 文件

.net - 前台属性行为困惑

c# - 在.Net中使用Linq解析没有根元素的xml元素

c# - 如何从程序集配置文件中检索 AppSettings?

c# - 在 WPF 中指定自定义窗口的默认外观?