我有一个WPF数据网格,我想在Datagrid中间显示一条消息“找不到记录”。
我可以看到这样做的一种方法是添加一个跨越所有列的数据行,其中height是数据网格的高度,然后将文本居中放在行中。
我挣扎的主要事情是以编程方式将行添加到数据网格中。
这可能或者有更简单的方法吗?
答案 0 :(得分:1)
您可以像以下那样以编程方式向datagrid添加项目:
myDataGrid.Items.Add(new MyDataGridItem());
如果您已将datagrid的ItemsSource设置为某个集合或其他内容,则需要修改该集合。你可以这样做:
myCollection.Add(new MyDataGridItem());
myDataGrid.ItemsSource = null;
myDataGrid.ItemsSource = myCollection;
答案 1 :(得分:1)
在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;
}
}