Привязка свойства объекта ячейки к DataGridCell в WPF DataGrid

При использовании WPF DataGrid мне необходимо изменить различные свойства отображения и связанные свойства DataGridCell, такие как Foreground, FontStyle, IsEnabled и т. Д., На основе соответствующего значения свойства объекта ячейки.

Теперь это легко сделать в коде, например (используя Observable Collection of ObservableDictionaries):

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

и работает нормально, однако я не вижу, как это сделать в XAML, так как я не могу найти способ установитьДорожка к свойству объекта ячейки.

Одна попытка 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>

но нет привязки кIsLocked имущество

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

Обратите внимание, что предыдущая версия вернуласьстрока [Col] .IsLocked и установите FontStyle, используя DataTrigger, но возвращенный объект не привязан к данным.

Обратите внимание, конечно, что приложение не знает, что столбцы во время разработки.

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

Конечно, это общая проблема, и я являюсь новичком WPF, пытающимся использовать все MVVM в моем проекте, но эта проблема сдерживает меня в связи с использованием WPF DataGrid.

Ответы на вопрос(1)

Ваш ответ на вопрос