WPF Listbox - 空列表显示消息

标签 wpf data-binding listbox styling

任何人都可以建议显示文本 block (带有诸如“List Empty”之类的文本)的最佳方式,以便它的可见性绑定(bind)到 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>

最佳答案

您的代码中的问题是在文本 block 本身中设置 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 的设置全部在样式中并且有效(至少在我的演示项目中)。

关于WPF Listbox - 空列表显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446903/

相关文章:

forms - 如何为复杂的 React 表单实现数据绑定(bind)

WPF: System.ArgumentException => {"' {0 }' is not a Visual or Visual3D."}

c# - TextBlock 中文本的水平自动滚动

c# - 在构造函数中设置 DataContext=this 和在 WPF 中绑定(bind)到 {RelativeSource Self} 之间的区别?

c# - 如何更新 ObservableCollection 的现有元素?

Python TKinter 下拉菜单问题

c# - 如何在 Windows Phone 8 的单项 View 中创建列表框 View ?使用来自 url 的异步 JSON

wpf - 为什么WPF TreeView控件继承自ItemsControl而不是Selector?

android - 使用android数据绑定(bind)将数据从Recycler View onClick传递到Detail Activity

c# - 为什么我的 WPF 绑定(bind)实现不能双向工作?