2009-06-19 79 views

回答

10

此XAML将执行类似操作,它具有可见ListView,显示列表和隐藏消息,并在列表为空时使用触发器切换可见性。

下面的代码可以与任何IList或ICollection一起使用,但如果您希望在添加或删除需要使用ObservableCollection或类似物品的项目时更新显示,则可以使用与任何数据源相同的技术,如始终。

的ContentPresenter是存在的,因为你只能使用触发器模板或样式里面,所以我们把一个DataTemplate内我们的控制和使用ContentPresenter来显示它。

如果您希望消息出现在ListView中而不是所有您需要做的是删除Setter隐藏ListView并向TextBlock添加一些边距以将其放置在ListVIew中的第一项应该位于的位置。

<ContentPresenter Content="{Binding}"> 
    <ContentPresenter.ContentTemplate> 
     <DataTemplate> 
      <Grid> 
       <ListView Name="list" ItemsSource="{Binding MyList}"/> 
       <TextBlock Name="empty" Text="No items found" Visibility="Collapsed"/> 
      </Grid> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding MyList.Count}" Value="0"> 
        <Setter TargetName="list" Property="Visibility" Value="Collapsed"/> 
        <Setter TargetName="empty" Property="Visibility" Value="Visible"/> 
       </DataTrigger>       
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </ContentPresenter.ContentTemplate> 
</ContentPresenter> 
+0

如果没有空白,此示例不起作用以隐藏TextBlock,因为可见性值不是布尔值。它可以切换到隐藏? – 2009-06-22 15:26:00

-1

将其绑定到一个DataSource +物业返回你想要的文字? 插入虚拟对象的字符串表示形式是您想要的文本。