Vinculando a propriedade de um objeto de célula a um DataGridCell no WPF DataGrid

Usando o WPF DataGrid, tenho a necessidade de alterar várias propriedades de exibição e relacionadas de um DataGridCell - como Foreground, FontStyle, IsEnabled e assim por diante - com base no valor relevante da propriedade do objeto de célula.

Agora isso é fácil de fazer no código, por exemplo (usando uma coleção observável de dicionários observáveis):

  var b = new Binding("IsLocked") { Source = row[column], Converter = new BoolToFontStyleConverter() };
  cell.SetBinding(Control.FontStyleProperty, b);

e funciona bem, no entanto, não consigo ver como fazer isso em XAML, pois não consigo encontrar uma maneira de definirCaminho à propriedade de um objeto de célula.

Uma tentativa de XAML é:

<Setter Property="FontStyle">
    <Setter.Value>
        <MultiBinding Converter="{StaticResource IsLockedToFontStyleConverter}" Mode="OneWay" UpdateSourceTrigger="PropertyChanged">
              <Binding />
              <Binding RelativeSource="{x:Static RelativeSource.Self}"/>
        </MultiBinding>
    </Setter.Value>
</Setter>

mas não há ligação aoEstá bloqueado propriedade

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    var row = (RowViewModel) values[0];
    var cell = (DataGridCell) values[1];
    if (cell != null && row != null)
    {
        var column = DataGridMethods.GetColumn(cell);
        return row[column].IsLocked ? "Italic" : "Normal";
    }

    return DependencyProperty.UnsetValue;
}

Observe que uma versão anterior retornoulinha [col] .IsLocked e defina o FontStyle usando um DataTrigger, mas um objeto retornado não está vinculado.

Observe, é claro, que o aplicativo não sabe quais são as colunas no tempo de design.

Finalmente, o DataTable é muito ineficiente para os meus requisitos, mas eu gostaria de ver como isso é feito com o DataTables de qualquer maneira; se houver uma solução para eles, isso poderá ser útil em outros lugares (embora eu prefira usar coleções).

Certamente, esse é um problema comum e eu sou um noobie do WPF tentando acessar todo o MVVM no meu projeto, mas esse problema está me impedindo no que diz respeito ao uso do WPF DataGrid.

questionAnswers(1)

yourAnswerToTheQuestion