2011-01-14 8 views

답변

4

마지막으로 나는 길을 찾을 수 있습니다.

  1. 빈 그리드는 메시지와 함께 텍스트 블록을 포함 RowDetailTemplate 만들기 그리드
  2. 에 기본 행을 추가 할 때

    <DataGrid.RowDetailsTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="No Record Found" Width="400"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
    
  3. 가 스타일을 설정 "없음 레코드를 찾을 수 없습니다" 데이터 그리드

    <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으로 설정하는 이유.

+0

실버 라이트에서도 같은 것을 원합니다. 그러나 는 실버 라이트에서 지원되지 않습니다. (... 어떤 대안? –

+0

위의 코드에서도 동일한 기능을 찾고 있는데 AncestorType = {x : 로컬 입력 : MainWindow}}}, "Type local : MainWindow not found"오류가 발생했습니다. 거기에 배치 할 필요가있는 조상 유형은 무엇입니까? – Surya

5

그리드 위에 텍스트 블록을 중앙에 배치하고 행 수에 따라 가시성을 설정하는 것이 쉽다는 것을 알게되었습니다. 저는 일반적으로 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> 
+0

목적을 해결할 수 있지만 내 요구 사항은 그리드 바닥 글 (메시 지 바닥 글) 그리드에 행으로 표시됩니다 – pchajer

11

질문이 게시 된 지 오래되었습니다. 하지만이 방법이 다른 사람에게 유용 할 거라고 생각했습니다.

<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"로 설정했습니다. 열을 정의하십시오. 이렇게하면 빈 데이터 소스가 바인딩 될 때 '빈 행'메시지와 함께 열 이름이 표시됩니다.

+1

헤더를 유지하고 싶지 않은 경우 이것이 최선의 해결책이라고 생각합니다 .. –

+0

이것은 가장 실용적이고 간단한 해결책입니다. 감사합니다! – gbdavid

관련 문제