DataGrid отличается первым столбцом - PullRequest
0 голосов
/ 03 июля 2018

У меня есть приложение WPF. Я использую Mahapps.Metro. Основным элементом управления в главном окне является DataGrid. Я хотел, чтобы это была таблица, но я хотел, чтобы заголовки столбцов и первая ячейка в каждой строке имели немного другой стиль. На данный момент это выглядит так:

enter image description here

Так что заголовки столбцов в порядке. Но теперь я хочу, чтобы первая ячейка в каждой строке была особенной, например, заголовки столбцов (более крупный шрифт, жирный шрифт, может быть вертикальная граница, например, горизонтальная). Есть ли способ сделать это? (помня тот факт, что я добавляю каждый столбец и строку в код, а не в XAML).

Пока мой код XAML выглядит так:

<Controls:MetroWindow x:Class="StateMachines.MainWindow"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                      Title="Maszyny Mealy'ego i Moora"
                      Height="450"
                      Width="800">
    <Controls:MetroWindow.RightWindowCommands>
        <Controls:WindowCommands>
            <Button Content="settings" />
            <Button>
                <StackPanel Orientation="Horizontal">
                    <Rectangle Width="20"
                               Height="20"
                               Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
                        <Rectangle.OpacityMask>
                            <VisualBrush Stretch="Fill" Visual="{StaticResource appbar_cupcake}" />
                        </Rectangle.OpacityMask>
                    </Rectangle>
                    <TextBlock Margin="4 0 0 0"
                               VerticalAlignment="Center"
                               Text="do something" />
                </StackPanel>
            </Button>
        </Controls:WindowCommands>
    </Controls:MetroWindow.RightWindowCommands>
    <DataGrid x:Name="DataGridLogic" Margin="318,59,0,136" Width="452" RenderTransformOrigin="0.657,1.249"
              ItemsSource="{Binding Path=Logic.DefaultView}" ColumnWidth="*" CanUserReorderColumns="False"
              CanUserResizeColumns="False" CanUserAddRows="False"  CanUserSortColumns="False" CanUserResizeRows="False">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MetroDataGridColumnHeader}">
                <Setter Property="HorizontalContentAlignment" Value="Center" />
            </Style>
        </DataGrid.ColumnHeaderStyle>
        <DataGrid.RowHeaderStyle>
            <Style TargetType="{x:Type DataGridRowHeader}" BasedOn="{StaticResource MetroDataGridRowHeader}">
                <Setter Property="HorizontalContentAlignment" Value="Center" />
            </Style>
        </DataGrid.RowHeaderStyle>
        <DataGrid.CellStyle>
            <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MetroDataGridCell}">
                <Setter Property="HorizontalContentAlignment" Value="Center" />
            </Style>
        </DataGrid.CellStyle>
    </DataGrid>
</Controls:MetroWindow>

1 Ответ

0 голосов
/ 03 июля 2018

Я бы использовал триггер стиля, основанный на показе индекса.

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Column.DisplayIndex}" Value="0">
        <Setter Property="Block.FontWeight" Value="Bold"/>
    </DataTrigger>
</Style.Triggers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...