사용할 수있는 레코드가 없으면 머리글 아래 데이터 격자에 TextBlock
을 추가하여 "No Record Found"메시지를 표시합니다.비어있을 때 WPF DataGrid에 "No record found"메시지가 표시됩니다.
참조를 위해 첨부 된 이미지를 고려하십시오.
사용할 수있는 레코드가 없으면 머리글 아래 데이터 격자에 TextBlock
을 추가하여 "No Record Found"메시지를 표시합니다.비어있을 때 WPF DataGrid에 "No record found"메시지가 표시됩니다.
참조를 위해 첨부 된 이미지를 고려하십시오.
마지막으로 나는 길을 찾을 수 있습니다.
에 기본 행을 추가 할 때
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="No Record Found" Width="400"></TextBlock>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
가 스타일을 설정 "없음 레코드를 찾을 수 없습니다" 데이터 그리드
<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이면 행 세부 템플릿을 표시합니다.
첫 번째 단계에서 추가 한 기본 행을 숨기기 위해 rowheight를 0으로 설정하는 이유.
그리드 위에 텍스트 블록을 중앙에 배치하고 행 수에 따라 가시성을 설정하는 것이 쉽다는 것을 알게되었습니다. 저는 일반적으로 MVVM을 사용하고 있으며보기 모델 속성에 대한 가시성을 바인딩합니다.
<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
실버 라이트에서도 같은 것을 원합니다. 그러나는 실버 라이트에서 지원되지 않습니다. (... 어떤 대안? –
위의 코드에서도 동일한 기능을 찾고 있는데 AncestorType = {x : 로컬 입력 : MainWindow}}}, "Type local : MainWindow not found"오류가 발생했습니다. 거기에 배치 할 필요가있는 조상 유형은 무엇입니까? – Surya