Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGrid中不存在数据时显示的默认类名_C#_Wpf_Xaml - Fatal编程技术网

C# DataGrid中不存在数据时显示的默认类名

C# DataGrid中不存在数据时显示的默认类名,c#,wpf,xaml,C#,Wpf,Xaml,我是WPF的新手。以下代码段具有DataGrid的样式/设置 <!--Global View Model Locator--> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> <!-- Main menu style --> <Style x:Key="MainMe

我是WPF的新手。以下代码段具有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>

        <!--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>

        <!--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:

        <!--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>
<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之前,DataGrid会显示“Viewer.Views.MainViewModel”。文本居中。类名将输出到屏幕上有什么原因吗?谢谢。

这是因为您要在中绑定到整个视图模型

        <!--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>
ItemsSource="{Binding}"

您可能想要绑定视图模型类的集合属性或(可观察的)集合属性。

您能再解释一下吗。我还是被卡住了。我假设(从名称)MainViewModel是一个具有属性的类(您可以绑定到属性)。它有ObservableCollection类型的属性吗?我没有看到ObservableCollection属性。我在类中看到的唯一数据是用于填充网格的dtGridReads变量。dtGridReads似乎是网格控件的名称。它也是MainViewModel类上的属性名称吗?
        <!--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>