Enlace de la propiedad de un objeto de celda a un DataGridCell en WPF DataGrid

Usando el WPF DataGrid tengo la necesidad de cambiar varias pantallas y propiedades relacionadas de un DataGridCell, como Foreground, FontStyle, IsEnabled, etc., en función del valor relevante de la propiedad del objeto de celda.

Ahora, esto es fácil de hacer en código, por ejemplo (usando una colección observable de diccionarios observables):

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

y funciona bien, sin embargo, no puedo ver cómo hacer esto en XAML ya que no puedo encontrar la manera de configurarCamino a la propiedad de un objeto de celda.

Uno de los intentos de XAML es:

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

pero no hay vinculante para elEstá bloqueado propiedad

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;
}

Tenga en cuenta que se devolvió una versión anteriorfila [col] .IsLocked y configure el FontStyle usando un DataTrigger pero un objeto devuelto no está enlazado a datos.

Tenga en cuenta, por supuesto, que la aplicación no sabe cuáles son las columnas en tiempo de diseño.

Finalmente, las DataTable son demasiado ineficientes para mis requisitos, pero de todos modos me interesaría ver cómo se hace esto con DataTables, si existe una solución para ellos, esto podría ser útil en otro lugar (aunque prefiero usar colecciones).

Seguramente este es un problema común y soy un novato de WPF que intenta hacer todo MVVM en mi proyecto, pero este problema me está frenando con respecto al uso de WPF DataGrid.

Respuestas a la pregunta(1)

Su respuesta a la pregunta