如何使用GridView在WPF Listview中显示一个空文本(如在ASP.net中),例如“请选择一个人”或“0个项目成立”?
答案 0 :(得分:11)
这个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>
答案 1 :(得分:-2)
将它绑定到DataSource +属性,返回您想要的文本? 插入虚拟对象,其String表示形式是您想要的文本..