【问题标题】:Display some text when binded listview has no items当绑定的列表视图没有项目时显示一些文本
【发布时间】:2011-02-07 05:45:10
【问题描述】:

以下是绑定到类的列表视图的语法......

<ListView ItemContainerStyle="{StaticResource listViewStyle}" Name="transactionListView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding}" MouseDoubleClick="transactionListView_MouseDoubleClick" IsSynchronizedWithCurrentItem="True" >
    <ListView.View>
        <GridView ColumnHeaderContainerStyle="{StaticResource gridViewHeaderColumnStyle}">
            <GridView.Columns>
                <GridViewColumn Width="70" Header="Serial" DisplayMemberBinding="{Binding Path=Serial}" />
                <GridViewColumn Width="100" Header="Date" DisplayMemberBinding="{Binding Path=Date, StringFormat={}{0:dd-MM-yyyy}}" />
                <GridViewColumn Width="200" Header="Seller" DisplayMemberBinding="{Binding Path=Seller}" />
                <GridViewColumn Width="200" Header="Buyer" DisplayMemberBinding="{Binding Path=Buyer}" />
                <GridViewColumn Width="70" Header="Bales" DisplayMemberBinding="{Binding Path=Bales}" />
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

*当列表为空或不包含任何项目时,如何显示一些文本?

【问题讨论】:

    标签: .net wpf xaml listview


    【解决方案1】:

    诀窍在于覆盖 ListView 的模板。当 ListView 中没有项目时,您应该使用 TextBlock 设置 ControlTemplate:

    <ListView Name="List" ItemsSource="{Binding Items}">
        <ListView.Style>
            <Style TargetType="ListView">
                <Style.Triggers>
                    <Trigger Property="HasItems"
                             Value="False">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="ListView">
                                    <TextBlock Text="No items..."/>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListView.Style>
    </ListView>
    

    【讨论】:

    • 只有一个小问题......它隐藏了 gridviewcolumns 标题......无论如何我会研究这个并尝试确保这种样式可以应用于 listviewitem 而不是 listview 本身...
    • 首先想到的是——在 TextBlock 到 ControlTemplate 之前重复 listview 声明(没有 ItemsSource,但有 ListView.View)(例如,你应该用 StackPanel 包装它们)。
    • 请注意,这同样适用于 ListBox 以外的 ItemsControl,只需要很少的修改。
    【解决方案2】:

    ListView 本身不提供此功能。最简单的方法是在 ListView 前面放置一个 TextBlock,并将其 Visibility 设置为 Collapsed。然后,当您的列表中没有项目时,您可以将其设为可见。

    如果您需要具体的帮助,请扩展您的问题。

    【讨论】:

    • 我想这是这样做的方法,但我无法理解在上面的代码中应该在哪里插入 texblock 以及如何实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多