Binden der Eigenschaft eines Zellenobjekts an eine DataGridCell in WPF DataGrid
Mit dem WPF-DataGrid muss ich verschiedene Anzeige- und verwandte Eigenschaften einer DataGridCell - wie z. B. Foreground, FontStyle, IsEnabled usw. - basierend auf dem relevanten Wert der Zellenobjekteigenschaft ändern.
Nun ist dies zum Beispiel im Code einfach möglich (mithilfe einer Observable-Sammlung von ObservableDictionaries):
var b = new Binding("IsLocked") { Source = row[column], Converter = new BoolToFontStyleConverter() };
cell.SetBinding(Control.FontStyleProperty, b);
und funktioniert gut, aber ich kann nicht sehen, wie dies in XAML gemacht wird, da ich keine Möglichkeit finde, @ zu setzePfa auf die Eigenschaft eines Zellenobjekts.
in XAML-Versuch ist:
<Setter Property="FontStyle">
<Setter.Value>
<MultiBinding Converter="{StaticResource IsLockedToFontStyleConverter}" Mode="OneWay" UpdateSourceTrigger="PropertyChanged">
<Binding />
<Binding RelativeSource="{x:Static RelativeSource.Self}"/>
</MultiBinding>
</Setter.Value>
</Setter>
aber es gibt keine Bindung an dieIst gesperr Eigentu
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;
}
Bitte beachten Sie, dass eine frühere Version @ zurückgegeben hrow [col] .IsLocked und stellen Sie den FontStyle mit einem DataTrigger ein, aber ein zurückgegebenes Objekt ist nicht datengebunden.
Bitte beachten Sie, dass die Anwendung die Spalten zur Entwurfszeit nicht kennt.
Finally DataTables sind viel zu ineffizient für meine Anforderungen, aber ich würde gerne sehen, wie dies mit DataTables gemacht wird. Wenn es eine solche Lösung für sie gibt, könnte dies an anderer Stelle nützlich sein (obwohl ich lieber Sammlungen verwende).
Sicherlich ist dies ein häufiges Problem, und ich bin ein WPF-Neuling, der versucht, alle MVVM-Funktionen in meinem Projekt zu nutzen, aber dieses Problem hält mich in Bezug auf die Verwendung des WPF-DataGrid zurück.