DataBinding im Codebehind

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von BeatsleigherXDA.

    DataBinding im Codebehind

    Hallo,

    ich möchte gerne den Namen einer Klasse in ein Label packen, mit DataBindings.

    Um den Namen der Klasse zu bekommen, muss ich das Binding im Codebehind machen, kann ich ja nicht über XAML machen.
    Nun möchte ich aber, dass vor dem Namen der Klasse "Class name: " steht. Ich hatte schon daran gedacht, string.Format("{0} {1}", "Class name:", --> Klassen Name <--), aber ich komme nicht drauf, wie ich das einsetzen soll.

    Vielleicht könnt ihr mir ja behilflich sein:

    C#-Quellcode

    1. namespace AndroidHub.ExceptionViewer.Views {
    2. using Newtonsoft.Json;
    3. using System.Collections.Generic;
    4. using System.Text;
    5. using System.Windows;
    6. using System.Windows.Controls;
    7. using System.Windows.Data;
    8. /// <summary>
    9. /// Interaction logic for ExceptionListViewItem.xaml
    10. /// </summary>
    11. public partial class ExceptionListViewItem : ListViewItem {
    12. public ExceptionListViewItem(Exception m_exception): this() {
    13. this.DataContext = m_exception;
    14. }
    15. public ExceptionListViewItem(string m_file): this() {
    16. this.DataContext = JsonConvert.DeserializeObject<Exception>(m_file);
    17. }
    18. private ExceptionListViewItem() {
    19. InitializeComponent();
    20. var m_exception = DataContext as Exception;
    21. Binding m_binding = new Binding("FullName");
    22. m_binding.Source = m_exception.GetType();
    23. BindingOperations.SetBinding(m_classNameTextBlock, TextBlock.TextProperty, m_binding);
    24. }
    25. }
    26. }


    Vielen Dank im Voraus
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln

    BeatsleigherXDA schrieb:

    Um den Namen der Klasse zu bekommen, muss ich das Binding im Codebehind machen, kann ich ja nicht über XAML machen.
    wüsste nicht, warum das nicht gehen sollte.
    Ich sehe auch ühaupt keinen Grund, hier eine eigene ListviewItem-Klasse zu coden.
    Gib einer Standard-Listview die richtige ObservableCollection als ItemsSource, dann kannst du den ListViewItems die Bindings setzen und alles Wpf oder was.
    @ErfinderDesRades

    Es wird eine Exception als Ctor-Parameter angegeben, die auch als DatenKontext zum Einsatz. Es werden verschiedene Daten in die ListViewItem angezeigt.
    Unter Anderem auch der Klassenname.
    Und ich wüsste nicht, wie ich in XAML an die GetType().FullName-Property rankommen sollte.
    Die ListViewItem istm so aufgebaut:


    Würde es vom Sinn ds Programms her so gehen, würde ich die Bindings auch so machen, aber da das nicht der Sinn und Zweck ist, ist es schon so richtig.
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln
    Stimmt. Ja, hast Recht. An die ViewModel gar nicht mehr gedacht X/
    Da macht man einmal wieder was mit WinForms und dann ist alles wieder komisch. ||

    Danke für den Denkanstoß!
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln