【发布时间】:2012-09-05 12:44:33
【问题描述】:
我有一个 WPF 数据网格,我想在数据网格中间显示一条消息“未找到记录”。
我可以看到这样做的一种方法是添加一个跨越所有列的单个数据行,其高度是数据网格的高度,然后将行中的文本居中。
我正在努力解决的主要问题是以编程方式将行添加到数据网格中。
这是可能的还是有更简单的方法来做到这一点?
【问题讨论】:
标签: c# wpf wpfdatagrid
我有一个 WPF 数据网格,我想在数据网格中间显示一条消息“未找到记录”。
我可以看到这样做的一种方法是添加一个跨越所有列的单个数据行,其高度是数据网格的高度,然后将行中的文本居中。
我正在努力解决的主要问题是以编程方式将行添加到数据网格中。
这是可能的还是有更简单的方法来做到这一点?
【问题讨论】:
标签: c# wpf wpfdatagrid
将“未找到记录”消息放在TextBlock 中,并根据DataGrid 是否有数据来显示/隐藏TextBlock。
<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;
}
}
【讨论】:
您可以像这样以编程方式将项目添加到数据网格:
myDataGrid.Items.Add(new MyDataGridItem());
如果您已将数据网格的 ItemsSource 设置为某个集合或其他内容,则需要改为修改该集合。你可以这样做:
myCollection.Add(new MyDataGridItem());
myDataGrid.ItemsSource = null;
myDataGrid.ItemsSource = myCollection;
【讨论】: