我有一个 WPF 数据网格,我想在数据网格中间显示一条消息“未找到记录”。
我可以看到这样做的一种方法是添加一个跨越所有列的单个数据行,其高度是数据网格的高度,然后将行中的文本居中。
我挣扎的主要事情是以编程方式将行添加到数据网格中。
这是可能的还是有更简单的方法来做到这一点?
我有一个 WPF 数据网格,我想在数据网格中间显示一条消息“未找到记录”。
我可以看到这样做的一种方法是添加一个跨越所有列的单个数据行,其高度是数据网格的高度,然后将行中的文本居中。
我挣扎的主要事情是以编程方式将行添加到数据网格中。
这是可能的还是有更简单的方法来做到这一点?
您可以像这样以编程方式将项目添加到数据网格:
myDataGrid.Items.Add(new MyDataGridItem());
如果您已将数据网格的 ItemsSource 设置为某个集合或其他内容,则需要修改该集合。你可以这样做:
myCollection.Add(new MyDataGridItem());
myDataGrid.ItemsSource = null;
myDataGrid.ItemsSource = myCollection;
将“未找到记录”消息放在 a 中,并根据是否有数据TextBlock
显示/隐藏。TextBlock
DataGrid
<Grid>
<DataGrid x:Name="_dataGrid" />
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding ElementName=_dataGrid, Path=HasItems, Converter={StaticResource BooleanToInverseVisibilityConverter}, Mode=OneWay}">
No Records Found
</TextBlock>
</Grid>
编辑:来源BooleanToInverseVisibilityConverter
(在我的 WPF 项目中,我有一堆像这样的方便的转换器总是可供我使用)
public class BooleanToInverseVisibilityConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return (bool) value ? Visibility.Collapsed : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
return null;
}
}