利用可能なレコードがない場合は、ヘッダの下のデータグリッドにTextBlock
を追加して「レコードが見つかりません」というメッセージを表示します。空のときにWPF DataGridに「レコードが見つかりません」というメッセージが表示される
参照のために添付のイメージを検討してください。
利用可能なレコードがない場合は、ヘッダの下のデータグリッドにTextBlock
を追加して「レコードが見つかりません」というメッセージを表示します。空のときにWPF DataGridに「レコードが見つかりません」というメッセージが表示される
参照のために添付のイメージを検討してください。
最後に私は方法を見つけることができます。
上のスタイルを設定し
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="No Record Found" Width="400"></TextBlock>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
を「いいえレコードが見つかっ」メッセージでテキストブロックが含まれているRowDetailTemplateを作成します。データグリッド
<DataGrid.Style>
<Style TargetType="DataGrid">
<Setter Property="RowDetailsVisibilityMode" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.IsRecordExists,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type local:MainWindow}}}" Value="false">
<Setter Property="RowHeight" Value="0"></Setter>
<Setter Property="RowDetailsVisibilityMode" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
ことでデフォルト(DataGridで使用可能なレコード)の行詳細テンプレートは折りたたまれます。
CLRのpopertyをチェックするDataTrigger .Falseの場合は、行の詳細テンプレートを表示します。
第1ステップで追加した既定の行を非表示にするために、rowheightを0に設定する理由。
グリッド上にテキストブロックを中央に配置し、行数に基づいて可視性を設定するのは簡単です。私は通常、MVVMを使用しており、可視モデルをView Modelプロパティにバインドします。
<Grid>
<toolkit:DataGrid>
<toolkit:DataGrid.Columns>
.
.
.
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
<TextBlock Text="No Records Found" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding EmptyMessageVisibility, Mode=OneWay, FallbackValue=Visible}" />
</Grid>
目的を解決するかもしれませんが、 – pchajer
質問が投稿されてから長い時間です。しかし、私はこれが他の人には役に立つかもしれないと思った。
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>
<DataGrid Name="dgProjects" ItemsSource="{Binding Projects}" AutoGenerateColumns="True" />
<TextBlock Text="Employee has no projects" Visibility="{Binding Items.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=dgProjects}" />
簡潔にするために、私はAutoGenerateColumns = "True"に設定しました。列を定義してください。このように空のデータソースがバインドされると、列名は「空の行」メッセージとともに表示されます。
ヘッダーを保持したくない場合は、これが最善の解決策だと思います。 –
これは最も実用的でシンプルなソリューションです。 – gbdavid
私は同じですが、silverlight.ButはSilverlightでサポートされていません:(...任意の代替? –
同じ機能を探していますが、上記のコードでも探していますAncestorType = {x:local :MainWindow}}}、 "タイプローカル:MainWindowが見つかりませんでした"というエラーが表示されました。先祖のタイプはどこに配置する必要がありますか? – Surya