0

我有一个 WPF 数据网格,我想在数据网格中间显示一条消息“未找到记录”。

我可以看到这样做的一种方法是添加一个跨越所有列的单个数据行,其高度是数据网格的高度,然后将行中的文本居中。

我挣扎的主要事情是以编程方式将行添加到数据网格中。

这是可能的还是有更简单的方法来做到这一点?

4

2 回答 2

1

您可以像这样以编程方式将项目添加到数据网格:

myDataGrid.Items.Add(new MyDataGridItem());

如果您已将数据网格的 ItemsSource 设置为某个集合或其他内容,则需要修改该集合。你可以这样做:

myCollection.Add(new MyDataGridItem());
myDataGrid.ItemsSource = null;
myDataGrid.ItemsSource = myCollection;
于 2012-09-05T12:56:51.717 回答
1

将“未找到记录”消息放在 a 中,并根据是否有数据TextBlock显示/隐藏。TextBlockDataGrid

<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;
    }

}
于 2012-09-05T12:58:41.747 回答