WPF Background an Property binden

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Schmittmuthelm.

    WPF Background an Property binden

    Ich habe mich die letzte Zeit bemüht, mehr mit {Binding} zu arbeiten, wie es ja auch gedacht ist in WPF denke ich.

    Wenn ich allerdings die Background Eigenschaft von Controls/Elementen an eine Property binden will passiert leider nichts.

    XML-Quellcode

    1. <Grid
    2. x:Name="GridHeader"
    3. Background="{Binding GridHeaderBackground}">


    Im CodeBehind:

    C#-Quellcode

    1. public Brush GridHeaderBackground { get; } = Brushes.Red;

    Hallo,

    ich hab's mal bei mir nachgebaut.
    Wenn ich dich richtig verstanden habe, hast du dein Property, an welches du bindest einfach in CodeBehind des Windows liegen.
    Du musst dann natürlich bei der Inistalisierung des Windows dafür sorgen, dass der DataContext gesetzt wird:

    C#-Quellcode

    1. public MainWindow()
    2. {
    3. InitializeComponent();
    4. DataContext = this;
    5. ButtonBackground = Brushes.Red;
    6. }


    Damit die WPF auch über Änderungen an dem Property benachrichtigt wird, solltest du noch das Interface INotifyPropertyChanged implementieren.
    Die Implementation sieht dann so aus:

    C#-Quellcode

    1. public event PropertyChangedEventHandler PropertyChanged;
    2. /// <summary>
    3. /// ''' Prozedur wirft den INotifyPropertyChanged Event welcher in der WPF benötigt wird um die UI zu verständingen
    4. /// ''' das eine Änderung an einem Property stattgefunden hat.
    5. /// ''' </summary>
    6. /// ''' <param name="prop">Das Propertie welche sich geändert hat. Ist Optional das der Parameter "CallerMemberName" verwendet</param>
    7. protected virtual void RaisePropertyChanged([CallerMemberName] string prop = "")
    8. {
    9. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    10. }


    Hier kann ich aber nur auf die Tutorialreihe von @Nofear23m verweisen, weill dort ist das ganze Thema Binding super erklärt!

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor