Xaml 空列表的列表框项目模板
我有一个在XAML中定义了项模板的列表框,如下所示:Xaml 空列表的列表框项目模板,xaml,windows-phone-7,Xaml,Windows Phone 7,我有一个在XAML中定义了项模板的列表框,如下所示: <ListBox Name="listBoxDisruptions"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<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>
<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>
你好某项
现在我想要的是在列表框的中心显示一行文本,以防此列表框的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>
<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>
你好某项
那么?也许有一种XAML方法可以使用类似WPF的技术来实现它- 然而,在Overflow7中,我厌倦了尝试实现这些功能-因此我使用了一个稍微有点黑客的技巧,而不是在页面中添加一个额外的文本块,然后使用:
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;
}
(从中学习的技巧)您可以将textblock置于listview之外,然后使用转换器将textblock的可见性绑定到用于listview的列表的计数 编辑:要求的示例:-
<ListView ItemsSource="{Binding MyItemSource}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<TextBlock Text="Some text" Visibility="{Binding MyItemSource.Count, Converter={StaticResource CountToVisibilityConverter}}"/>
我本来可以这样做的,但是Silverlight没有这样的东西让人觉得很奇怪。我做了类似的事情,但我有一个CollectionLengthToVisibility转换器,用于根据集合长度隐藏/显示内容。第一行的链接链接指向此页面。您有什么建议吗?