【发布时间】:2021-05-25 20:05:27
【问题描述】:
所以我正在尝试自定义一个DataGrid 控件,并且由于某种原因它将DataContext 的名称添加为HeaderColumn,这是为什么呢?您可以在这张图片的末尾看到它。
<Window x:Class="Watcher.MainWindow"
mc:Ignorable="d"
Title="MainWindow"
Height="450" Width="1200"
Background="#27292D">
<Window.DataContext>
<viewmodel:MainViewModel/>
</Window.DataContext>
..
<DataGrid Grid.Column="1"
Grid.Row="1"
AutoGenerateColumns = "False"
ItemsSource="{Binding Coins}"
GridLinesVisibility="Horizontal"
HorizontalGridLinesBrush="Gray"
Background="Transparent"
HeadersVisibility="Column"
Margin="10,0,0,0"
BorderThickness="0"
CanUserAddRows="False">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="Transparent"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Resources>
<Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"
TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Foreground" Value="LightGray"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="0,0,0,1" BorderBrush="Gray">
<TextBlock Text="{Binding }" FontFamily="Fonts/#Poppins" Width="120" Margin="0,0,0,5" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header = "Symbol">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding Symbol}"
Width="50" Height="50"
Foreground="#3C82EA"
VerticalAlignment="Center"
HorizontalAlignment="Left"
FontFamily="Fonts/#Poppins"
Padding="0,16,0,0"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header = "Name">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding Name}"
Width="50" Height="50"
Foreground="#3C82EA"
VerticalAlignment="Center"
HorizontalAlignment="Left"
FontFamily="Fonts/#Poppins"
Padding="0,16,0,0"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header = "Price">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding Price, StringFormat=${0}}"
Width="50" Height="50"
Foreground="Gray"
VerticalAlignment="Center"
HorizontalAlignment="Left"
FontFamily="Fonts/#Poppins"
Padding="0,16,0,0"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header = "% Change (24 hrs)">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Height="25" Background="#3A514D"
HorizontalAlignment="Left"
CornerRadius="4">
<TextBlock Text="+58.63%"
Foreground="#4BE299"
VerticalAlignment="Center"
Padding="6,6,8,6"
Margin="0,1,0,0"
FontFamily="Fonts/#Poppins"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】: