2011-01-14 129 views

回答

4

最后我能找到方法。

  1. 当空网格,加上电网
  2. 一个默认行创建包含有消息文本块中RowDetailTemplate“没有符合条件的记录”

    <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上可用的记录)行细节模板将被折叠。

DataTrigger检查CLR属性,如果它为false,则显示行详细模板。

将rowheight设置为0以隐藏我们在第1步添加的默认行的原因。

+0

我想要silverlight.But而不是Silverlight支持<...任何替代方案? – 2013-01-11 10:51:41

+0

我也在寻找相同的功能,但在上面的代码AncestorType = {x:Type local :MainWindow}}},我得到错误“Type local:MainWindow not found”,我需要放置哪些祖先类型 – Surya 2014-12-12 14:00:51

5

我发现很容易将文本块居中在网格上并根据行数设置其可见性。我通常使用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> 
+0

它可以解决目的,但我的要求是在网格上显示消息本身(在网格页脚之前)意味着消息将显示为一排网格 – pchajer 2011-03-13 13:06:57

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”。请定义列。这样当一个空数据源被绑定时,列名将与“空行”消息一起显示。

相关问题