WPFデータグリッドがあり、データグリッドの中央に「レコードが見つかりません」というメッセージを表示したいと思います。
これを行う方法の1つは、すべての列にまたがる単一のデータ行を追加し、whosの高さはデータグリッドの高さであり、テキストを行の中央に配置することです。
Imが苦労している主なことは、データグリッドに行をプログラムで追加することです。
これは可能ですか、それともこれを行うためのより簡単な方法がありますか?
WPFデータグリッドがあり、データグリッドの中央に「レコードが見つかりません」というメッセージを表示したいと思います。
これを行う方法の1つは、すべての列にまたがる単一のデータ行を追加し、whosの高さはデータグリッドの高さであり、テキストを行の中央に配置することです。
Imが苦労している主なことは、データグリッドに行をプログラムで追加することです。
これは可能ですか、それともこれを行うためのより簡単な方法がありますか?
次のように、プログラムでデータグリッドにアイテムを追加できます。
myDataGrid.Items.Add(new MyDataGridItem());
データグリッドのItemsSourceを何らかのコレクションなどに設定した場合は、代わりにそのコレクションを変更する必要があります。あなたはこのようにそれを行うことができます:
myCollection.Add(new MyDataGridItem());
myDataGrid.ItemsSource = null;
myDataGrid.ItemsSource = myCollection;
代わりに「レコードが見つかりません」というメッセージを入力し、データがあるかどうかに応じて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;
}
}