2011-08-23 48 views
0

我完全不熟悉WPF。以下代码片段具有DataGrid的样式/设置。DataGrid中没有数据时显示默认类名

 <!--Global View Model Locator--> 
     <vm:ViewModelLocator x:Key="Locator" 
         d:IsDataSource="True" /> 

     <!-- Main menu style --> 
     <Style x:Key="MainMenu" TargetType="{x:Type MenuItem}"> 
      <Setter Property="FontFamily" Value="Arial"/> 
      <Setter Property="FontSize" Value="14"/> 
     </Style> 

     <!-- Data grid cell style --> 
     <Style x:Key="CenterCellStyle" TargetType="DataGridCell"> 
      <Style.Setters> 
       <Setter Property="HorizontalAlignment" Value="Center"/> 
      </Style.Setters> 
     </Style> 

     <!-- DataGridColumnHeader style --> 
     <Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">         
      <Setter Property="VerticalContentAlignment" Value="Center"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
         <Grid> 
          <dg:DataGridHeaderBorder x:Name="HeaderBorder" BorderThickness="0" 
                Padding="0" SeparatorVisibility="Hidden"> 
           <Border BorderThickness="0"> 
            <TextBlock Text="{Binding}" 
               VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>           
           </Border> 
          </dg:DataGridHeaderBorder>                 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter>     
     </Style> 

     <!-- CENTER aligned DataGridColumnHeader style --> 
     <Style x:Key="CenterColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}" 
       BasedOn="{StaticResource ColumnHeaderStyle}">     
       <Setter Property="HorizontalContentAlignment" Value="Center"/>     
     </Style> 

     <!-- RIGHT aligned DataGridColumnHeader style -->    
     <Style x:Key="RightColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}" 
       BasedOn="{StaticResource ColumnHeaderStyle}"> 
      <Setter Property="HorizontalContentAlignment" Value="Right"/> 
     </Style>    

     <!-- Consensus DataGrid --> 
     <Style x:Key="ConsensusDataGridStyle" TargetType="{x:Type DataGrid}"> 
      <Style.Setters>      
       <Setter Property="ColumnHeaderStyle" Value="{StaticResource CenterColumnHeaderStyle}"/>      
      </Style.Setters> 
     </Style> 

     <!-- Validation Error Template --> 
     <DataTemplate DataType="{x:Type ValidationError}"> 
      <TextBlock FontStyle="Italic" Foreground="Red" 
         HorizontalAlignment="Left" Margin="5,5" Text="{Binding Path=ErrorContent}"/> 
     </DataTemplate> 
    </ResourceDictionary> 
</Application.Resources> 

相应的XAML:数据被填充到DataGrid中

<UserControl x:Class="Viewer.Views.ConsensusReadControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <DataGrid x:Name="dtGridReads" AutoGenerateColumns="False" 
      VirtualizingStackPanel.IsVirtualizing="True"          
      VirtualizingStackPanel.VirtualizationMode ="Standard" 
       EnableColumnVirtualization="True" 
       EnableRowVirtualization="True" 
      ScrollViewer.IsDeferredScrollingEnabled="True" 
      CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="True" 
      ItemsSource ="{Binding}" Block.TextAlignment="Center" 
      AlternatingRowBackground="LightGoldenrodYellow" RowBackground="White" 
       CanUserAddRows="False" CanUserDeleteRows="False" FrozenColumnCount="1" 
       GridLinesVisibility="None" Style="{StaticResource ConsensusDataGridStyle}" FontSize="12" > 
    </DataGrid> 
</UserControl> 

之前,DataGrid中说: “Viewer.Views.MainViewModel” 。文本居中。是否有类名输出到屏幕的原因?谢谢。

回答

0

那是因为你在

ItemsSource="{Binding}" 

你可能要绑定或您的视图模型类的(observeable)集合属性绑定到整个视图模型。

+0

你能解释一下吗?我仍然卡住。谢谢。 – Crystal

+0

我假设(从名称)MainViewModel是一个类的属性(这是你可以绑定到)。它有一个ObservableCollection 类型的属性? –

+0

我没有看到一个observableCollection属性。我在该类中看到的唯一数据是用于填充网格的dtGridReads变量。 – Crystal