当WPF DataGrid空时显示“没有找到记录”消息
答
最后我能找到方法。
- 当空网格,加上电网
-
一个默认行创建包含有消息文本块中RowDetailTemplate“没有符合条件的记录”
<DataGrid.RowDetailsTemplate> <DataTemplate> <StackPanel> <TextBlock Text="No Record Found" Width="400"></TextBlock> </StackPanel> </DataTemplate> </DataGrid.RowDetailsTemplate>
-
上设置样式数据网格
<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>
通过默认(datagrid上可用的记录)行细节模板将被折叠。
DataTrigger检查CLR属性,如果它为false,则显示行详细模板。
将rowheight设置为0以隐藏我们在第1步添加的默认行的原因。
答
我发现很容易将文本块居中在网格上并根据行数设置其可见性。我通常使用MVVM,并将可见性绑定到View Model属性:
<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
它可以解决目的,但我的要求是在网格上显示消息本身(在网格页脚之前)意味着消息将显示为一排网格 – pchajer 2011-03-13 13:06:57
答
自从发布问题以来,它已经很长时间了。但我认为这可能对别人有用。
<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}" />
为了简单起见,我设置了AutoGenerateColumns =“True”。请定义列。这样当一个空数据源被绑定时,列名将与“空行”消息一起显示。
我想要silverlight.But而不是Silverlight支持<... class="text-secondary"> 2013-01-11 10:51:41
我也在寻找相同的功能,但在上面的代码AncestorType = {x:Type local :MainWindow}}},我得到错误“Type local:MainWindow not found”,我需要放置哪些祖先类型 – Surya 2014-12-12 14:00:51