WPF listbox empty datatemplate

后端 未结 2 673
我寻月下人不归
我寻月下人不归 2020-12-02 09:38

I was wondering how people handle a ListBox control that has no items? e.g. I want to bind a list of search results but if no results are found i would like to display \"No

相关标签:
2条回答
  • 2020-12-02 10:15

    Based on @Matt Hamilton's accepted answer, for reference, I created a variation which does not require the binding, as it uses the HasItems property of the ListBox to trigger the empty template:

    <ListBox.Style>
        <Style x:Key="EmptyListStyle"
               TargetType="ListBox"
               BasedOn="{StaticResource {x:Type ListBox}}">
            <Style.Triggers>
                <!-- Use ListBox.HasItems instead of Binding -->
                <Trigger Property="HasItems" Value="False">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <TextBlock>No items to display</TextBlock>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListBox.Style>
    

    This allows the style to be used globally, without having to know the property name to which the list binds. I found it useful when binding to a CollectionViewSource defined in XAML.

    I'm not aware of any drawbacks of this method, comments welcome if you should find any.

    0 讨论(0)
  • 2020-12-02 10:37

    I've had some success with this code:

    <Style TargetType="ListBox" x:Key="ListStyle" BasedOn="{StaticResource {x:Type ListBox}}">
        <Style.Triggers>
            <DataTrigger 
                Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Items.Count}" 
                Value="0"
                >
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <TextBlock>No items to display</TextBlock>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
    
    0 讨论(0)
提交回复
热议问题