Ich habe die im Anschluss an diese XAML:Converter auf einem Get-only-Eigenschaft nicht (WPF) genannt
<ListBox Background="{Binding CurrentJob, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource JobToColorConverter}, Mode=TwoWay}">
Und ich möchte mein ListBox
Hintergrund ändern in Abhängigkeit von der CurrentJob
Eigenschaft. Hier ist ein Teil meines Code hinter:
private Job CurrentJob => ((FooClass) WindowsPanel.Children[0]).CurrentJob;
Und hier ist mein (Dummy) -Konverter:
public class JobToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var j = (Job) value;
return new SolidColorBrush(Color.FromArgb(100, 60, 116, 154))
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
ich, dass die
nun überprüft, mein Problem ist, dass, wenn CurrentJob
Änderung , kein Konvertierungsereignis wird ausgelöst und meine Convert
-Methode wird nie aufgerufen.
Ich denke, das liegt daran, CurrentJob
ist eine schreibgeschützte Eigenschaft, und so weiß das WPF-Framework nicht, wenn die Eigenschaft ändern. Das ist richtig?
Sie müssen in Ihrer Klasse implementieren, um die 'INotifyPropertyChanged' Schnittstelle und stellen Sie sicher, dass ein' PropertyChanged' Ereignis wird ausgelöst, wenn Sie die Eigenschaft ändern. Der automatische Ausdruck mit '=>' Notation passt hier nicht. – dymanoid
Darüber hinaus muss 'CurrentJob' für WPF-Datenbindung eine öffentliche Eigenschaft und kein privates Feld sein. – Clemens