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” 。文本居中。是否有类名输出到屏幕的原因?谢谢。
你能解释一下吗?我仍然卡住。谢谢。 – Crystal
我假设(从名称)MainViewModel是一个类的属性(这是你可以绑定到)。它有一个ObservableCollection类型的属性? –
我没有看到一个observableCollection属性。我在该类中看到的唯一数据是用于填充网格的dtGridReads变量。 – Crystal