Como definir o plano de fundo de uma célula de datagrid durante o evento AutoGeneratingColumn, dependendo do seu valor?

Eu ainda estou lutando com a manipulação de fundos de células, então estou fazendo uma nova pergunta.

Um usuário "H.B." escreveu que eu posso realmente definir o estilo da célula durante oAutoGeneratingColumn evento -Alterar a cor da célula DataGrid com base nos valores. O problema é que não tenho certeza de como fazer isso.

O que eu quero: Definir diferentecores de fundo para cada célula, dependendo do seu valor. Se o valor fornull Eu também queronão ser estarclicável (focalizável eu acho).

O que eu tenho / estou tentando fazer:

private void mydatagrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    foreach (Cell cell in e.Column)
    {
        if (cell.Value < 1)
        { 
            cell.Background = Color.Black; 
            cell.isFocusable = false; 
        } 
        else
        {
            cell.Background = Color.Pink;
        }
    }
}

Este é apenas o pseudocódigo. É algo como isso é possível durante a geração automática de colunas e, em caso afirmativo, como posso editar meu código para que ele seja válido?

Eu li sobre conversores de valor, mas eu quero saber se é de alguma forma possível programaticamente, sem escrever XAML.

Por favor, entenda que eu ainda sou um iniciante em C # / WPF / DataGrid.

Parte1 da solução:

Eu usei a resposta que aceitei. Basta colocá-lo em

<Window.Resources> 
<local:ValueColorConverter x:Key="colorConverter"/>
        <Style x:Key="DataGridCellStyle1" TargetType="{x:Type DataGridCell}"> 
            <Setter Property="Padding" Value="5"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridCell}">
                        <Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
                            <Border.Background>
                                <MultiBinding Converter="{StaticResource colorConverter}">
                                    <Binding RelativeSource="{RelativeSource AncestorType=DataGridCell}" Path="Content.Text"/>
                                    <Binding RelativeSource="{RelativeSource AncestorType=DataGridCell}" Path="IsSelected"/>
                                </MultiBinding>
                            </Border.Background>
                            <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
</Window.Resources>

E feito para isso umMultiBinding conversor para que eu possa também definir a cor de fundo para as células selecionadas.

Problema:

Agora eu só tenho que resolver o problema de definir o foco das células vazias. Alguma dica?

  <Style.Triggers>
        <Trigger Property="HasContent" Value="False">
            <Setter Property="Focusable" Value="False"/>
        </Trigger>
    </Style.Triggers>

Isso não funciona. Eu tinha cordas vazias nas celas vazias, mas elas estavam cheias de ´null´s, então deveria funcionar, certo? Ou o que estou fazendo errado: | ?

Parte da solução 2:

Portanto, o código acima não funcionará, desde que o valor da célula seja uma ´TextBox´, então decidi encontrar outra maneira de lidar com isso, o que pode ser encontrado na minha resposta aqui:https://stackoverflow.com/a/16673602/2296407

Obrigado por tentar me ajudar :)

questionAnswers(3)

yourAnswerToTheQuestion