首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当DataGrid中没有数据时显示默认类名称

当DataGrid中没有数据时显示默认类名称
EN

Stack Overflow用户
提问于 2011-08-24 06:14:38
回答 1查看 225关注 0票数 0

我是WPF的新手。下面的代码片段包含DataGrid的样式/设置。

代码语言:javascript
复制
        <!--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:

代码语言:javascript
复制
<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“。文本居中。为什么类名被输出到屏幕上有什么原因吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-24 06:26:38

这是因为您将绑定到

代码语言:javascript
复制
ItemsSource="{Binding}"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7168192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档