代码之家  ›  专栏  ›  技术社区  ›  Alexander Zwitbaum

WPF ListView空文本

  •  5
  • Alexander Zwitbaum  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  11
  •   Nir    15 年前

    此XAML将执行类似的操作,它具有一个显示列表和隐藏消息的可见ListView,并在列表为空时使用触发器切换可见性。

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

    ContentPresenter之所以存在,是因为您只能在模板或样式中使用触发器,所以我们将控件放在数据模板中,并使用ContentPresenter来显示它。

    如果您希望消息出现在ListView中,那么您所要做的就是删除隐藏ListView的setter,并在文本块中添加一些边距,以将其定位到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>
    
        2
  •  -2
  •   Gishu    15 年前

    是否将其绑定到返回所需文本的DataSource+属性? 在字符串表示为所需文本的虚拟对象中的槽。