2011-01-14 29 views

Trả lời

4

Cuối cùng tôi có thể tìm ra cách.

  1. Khi lưới điện trong trống rỗng, thêm một hàng mặc định trên lưới
  2. Tạo một RowDetailTemplate có chứa một khối văn bản với một thông điệp "Không Ghi Found"

    <DataGrid.RowDetailsTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="No Record Found" Width="400"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
    
  3. Đặt kiểu trên DataGrid

    <DataGrid.Style> 
        <Style TargetType="DataGrid"> 
         <Setter Property="RowDetailsVisibilityMode" Value="Collapsed"></Setter> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding DataContext.IsRecordExists, 
                RelativeSource={RelativeSource Mode=FindAncestor, 
                AncestorType={x:Type local:MainWindow}}}" Value="false"> 
           <Setter Property="RowHeight" Value="0"></Setter> 
           <Setter Property="RowDetailsVisibilityMode" Value="Visible"></Setter> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
    </DataGrid.Style> 
    

Bằng mẫu chi tiết hàng mặc định (bản ghi có sẵn trên datagrid) sẽ bị thu gọn.

DataTrigger kiểm tra CLR poperty, nếu nó sai thì hiển thị mẫu chi tiết hàng.

Lý do đặt độ cao hàng là 0 để ẩn hàng mặc định mà chúng tôi đã thêm vào ở bước đầu tiên.

+0

Tôi muốn giống nhau nhưng trên silverlight.But không được hỗ trợ trong silverlight :(... Bất kỳ phương án nào khác? –

+0

Tôi cũng đang tìm kiếm cùng một chức năng nhưng trong đoạn mã trên AncestorType = {x: Type local : MainWindow}}}, tôi nhận được lỗi "Loại địa phương: MainWindow không tìm thấy", loại tổ tiên tôi cần phải đặt có – Surya

5

Tôi thấy rằng dễ dàng căn giữa khối văn bản trên lưới và đặt chế độ hiển thị của nó dựa trên số hàng. Tôi thường sử dụng MVVM và sẽ ràng buộc khả năng hiển thị đối với thuộc tính Chế độ xem:

<Grid> 
    <toolkit:DataGrid> 
     <toolkit:DataGrid.Columns> 
      . 
      . 
      . 
     </toolkit:DataGrid.Columns> 
    </toolkit:DataGrid> 
    <TextBlock Text="No Records Found" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding EmptyMessageVisibility, Mode=OneWay, FallbackValue=Visible}" /> 
</Grid> 
+0

Nó có thể giải quyết mục đích nhưng yêu cầu của tôi đã hiển thị thông báo trên lưới chính nó (trước khi chân lưới) có nghĩa là tin nhắn – pchajer

11

Đã lâu rồi câu hỏi được đăng. Nhưng tôi nghĩ điều này có thể hữu ích cho người khác.

<Window.Resources> 
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
</Window.Resources> 

<DataGrid Name="dgProjects" ItemsSource="{Binding Projects}" AutoGenerateColumns="True" /> 

<TextBlock Text="Employee has no projects" Visibility="{Binding Items.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=dgProjects}" /> 

Vì mục đích đơn giản, tôi đã đặt AutoGenerateColumns = "True". Vui lòng xác định các cột. Bằng cách này khi một nguồn dữ liệu rỗng bị ràng buộc, các tên cột sẽ được hiển thị cùng với thông báo 'Hàng trống'.

+1

Nếu bạn không muốn giữ tiêu đề, tôi nghĩ đây là giải pháp tốt nhất –

+0

Đây là giải pháp thực tế và đơn giản nhất. – gbdavid

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