2009-06-19 67 views

Trả lời

10

XAML này sẽ làm điều gì đó tương tự, nó có một ListView có thể nhìn thấy cho thấy một danh sách và nhắn ẩn và chuyển tầm nhìn khi danh sách rỗng sử dụng một kích hoạt .

Mã bên dưới sẽ hoạt động với bất kỳ IList hoặc ICollection nào nhưng có thể sử dụng cùng một kỹ thuật với bất kỳ nguồn dữ liệu nào, như mọi khi, nếu bạn muốn hiển thị cập nhật khi thêm hoặc xóa các mục bạn cần sử dụng ObservableCollection hoặc tương tự .

ContentPresenter có ở đó vì bạn chỉ có thể sử dụng trình kích hoạt bên trong mẫu hoặc kiểu, vì vậy chúng tôi đặt các điều khiển bên trong DataTemplate và sử dụng ContentPresenter để hiển thị nó.

Nếu bạn muốn thông báo xuất hiện bên trong ListView hơn tất cả những gì bạn phải làm là xóa Setter ẩn ListView và thêm một số lề vào TextBlock để định vị nó trong đó mục đầu tiên trong ListVIew sẽ là.

<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

Mẫu này không hoạt động để ẩn TextBlock nếu không trống vì giá trị hiển thị không phải là boolean. Có thể chuyển nó sang ẩn không? –

+0

@Shurup, tôi không hiểu nhận xét của bạn, TextBlock bị ẩn khi danh sách không trống - nhưng bạn có thể muốn xem BooleanToVisibilityConverter – Nir

-1

Liên kết nó với một DataSource + Thuộc tính trả về văn bản bạn muốn? Khe cắm trong một đối tượng giả mà đại diện String là văn bản mà bạn muốn ..

Các vấn đề liên quan