Nếu không có sẵn bản ghi, tôi muốn thêm TextBlock
trên lưới dữ liệu, bên dưới tiêu đề, hiển thị thông báo "Không tìm thấy bản ghi".Hiển thị thông báo "Không tìm thấy bản ghi" trên DataFrid WPF khi nó trống
Hãy xem hình ảnh đính kèm để tham khảo.
Nếu không có sẵn bản ghi, tôi muốn thêm TextBlock
trên lưới dữ liệu, bên dưới tiêu đề, hiển thị thông báo "Không tìm thấy bản ghi".Hiển thị thông báo "Không tìm thấy bản ghi" trên DataFrid WPF khi nó trống
Hãy xem hình ảnh đính kèm để tham khảo.
Cuối cùng tôi có thể tìm ra cách.
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>
Đặ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.
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>
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
Đã 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'.
Nếu bạn không muốn giữ tiêu đề, tôi nghĩ đây là giải pháp tốt nhất –
Đây là giải pháp thực tế và đơn giản nhất. – gbdavid
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? –
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