列表框项目模板为空列表

Ahm*_*taq 8 xaml windows-phone-7

我有一个列表框,其中包含在XAML中定义的项模板,如下所示:

        <ListBox Name="listBoxDisruptions">

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
                        <TextBlock Text="{Binding text}" Foreground="Black" FontSize="29">Hello! some item</TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>             

        </ListBox>
Run Code Online (Sandbox Code Playgroud)

现在我想要的是在列表框的中心显示一行文本,以防该列表框的ItemSource为空.

XAML是否支持某种无项目模板?这样的事情:

    <ListBox Name="listBoxDisruptions">

                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
                            <TextBlock Text="{Binding text}" Foreground="Black" FontSize="29">Hello! some item</TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate> 

<ListBox.NoItemTemplate>
<TextBlock Text="No Items to display"/>
</ListBox.NoItemTemplate>                   

            </ListBox>
Run Code Online (Sandbox Code Playgroud)

那么?

Stu*_*art 5

可能有一种XAML方法可以使用类似WPF的技术 - 列表框项模板用于空列表

然而,在Overflow7中我试图让这些工作变得无聊 - 所以我使用了一个稍微hacky的技巧,而不是向页面添加额外的TextBlock,然后使用:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { 
            listBox1.ItemsSource = data; 

            data.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(data_CollectionChanged); 

        } 

        void data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { 
            if (data.Count == 0) 
                textBlock1.Visibility = Visibility.Visible; 
            else 
                textBlock1.Visibility = Visibility.Collapsed; 
        } 
Run Code Online (Sandbox Code Playgroud)

(Trick从http://forums.create.msdn.com/forums/p/70755/431687.aspx了解到)

  • 我做了类似的事情,但我只有一个CollectionLengthToVisibility转换器,我用它来隐藏/显示基于集合长度的东西. (5认同)