Matt
Matt

Reputation: 1973

WPF listbox empty item template not showing

I am try to list some data in WPF listbox control. It is the first time I am using DataTemplate in WPF. Everything is working fine except when there is no data it is not showing 'No items to display'. Below is my code.

    <ListBox Name="itemsCtrl" Background="#FFE5E5E5" BorderBrush="{x:Null}" SelectionChanged="itemsCtrl_SelectionChanged" Style="{StaticResource ListStyle}">

        <ListBox.Resources>
            <!-- Set SelectedItem Background here -->
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#C2C2C2"/>
            <Style TargetType="{x:Type ListBoxItem}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsMouseOver,
                                    RelativeSource={RelativeSource
                                      Self}}"
                        Value="True">
                        <Setter Property="Background"
                         Value="#C2C2C2" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <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>
        </ListBox.Resources>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Cursor="Hand" Name="hoverDataTemplate" Orientation="Horizontal" Width="370" VerticalAlignment="Top" Height="40" HorizontalAlignment="Left" >
                    <Label VerticalContentAlignment="Center" HorizontalAlignment="Left" Padding="15,5,5,5" Width="330"  Content="{Binding Path=EVENT_TITLE}" FontSize="12"/>
                    <Image Height="28" Source="/pr;component/Images/black_next.png" Stretch="Fill" Width="28" />

                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

And I am binding data source as shown below.

    itemsCtrl.ItemsSource = dao.SelectDataTable(cmd).DefaultView;

When I set the style property of ListBox as ListStyle it is throwing an error

'Provide value on 'System.Windows.StaticResourceExtension' threw an exception.' Line number '292' and line position '22'.

Can anybody point out how to make it correct?

Thanks in advance.

Upvotes: 1

Views: 3852

Answers (1)

Dhaval Patel
Dhaval Patel

Reputation: 7601

i have used below code and it's work fine my xaml code

<ListBox Grid.ColumnSpan="2" Grid.Row="1" Height="32" HorizontalAlignment="Left" Margin="160,2,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" Style="{StaticResource Dhaval}"/>

Style look like

<Style x:Key="Dhaval" TargetType="{x:Type ListBox}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={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>

Upvotes: 5

Related Questions