【问题标题】:WPF Listbox - Empty List Display MessageWPF Listbox - 空列表显示消息
【发布时间】:2011-01-27 15:53:33
【问题描述】:

任何人都可以建议显示文本块(带有诸如“List Empty”之类的文本)的最佳方式,以便它的可见性绑定到 Items.Count。

我已经尝试了以下代码,但无法让它工作,所以认为我一定是做错了。

    <ListBox x:Name="lstItems" 
        ItemsSource="{Binding ListItems}">
    </ListBox>
    <TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" Visibility="Collapsed">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>  
                </Style.Triggers>
            </Style>                            
        </TextBlock.Style>
    </TextBlock>

【问题讨论】:

    标签: wpf data-binding listbox styling


    【解决方案1】:

    您的代码中的问题是在文本块本身中设置 Visibility 的值比在样式中设置它具有更高的优先级。因此,即使触发发生,触发内部的设置也不起作用。将 XAML 更改为:

      <TextBlock Margin="4" FontStyle="Italic" FontSize="12" Text="List is empty" >
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
               <Setter Property="Visibility" Value="Collapsed" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lstItems, Path=Items.Count}" Value="0">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>  
                </Style.Triggers>
            </Style>                            
        </TextBlock.Style>
      </TextBlock>
    

    Visibility 的设置全部在样式中并且有效(至少在我的演示项目中)。

    【讨论】:

    • 谢谢,这完全解决了我的问题(和我的理解:))
    猜你喜欢
    • 2013-10-06
    • 2013-12-20
    • 2014-11-08
    • 2015-04-05
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多