Laden...

Binding Problem

Erstellt von M.Holder vor 13 Jahren Letzter Beitrag vor 13 Jahren 895 Views
M.Holder Themenstarter:in
71 Beiträge seit 2009
vor 13 Jahren
Binding Problem

Hallo,

ich habe ein eigenes TreeViewItem programmiert. Es erbt vom Normalen TreeViewItem und hat einfach ein paar mehr Propertys.

Ich implementiere ein Property so:

public static readonly DependencyProperty IDProperty =
            DependencyProperty.Register("ID", typeof(string), typeof(ContentTreeViewItem));
        public string ID {
            get { return (string)GetValue(IDProperty); }
            set { SetValue(IDProperty, value); }
        }

Ist das richtig oder habe ich hier schon einen Fehler drin?

Und in XAML baue ich so mein Control ein:


<local:ContentTreeViewItem Header="{Binding Path=Name}"
                                                               SiteName="{Binding Path=Name}"
                                                               ID="{Binding Path=ID}"
                                                               ToolTipService.IsEnabled="False" />

Im Click-Event vom Item, caste ich den sender zum ContentTreViewItem, und versuche wieder die ID zu holen. Der Debugger sagt aber, das die ID und auch alle meine anderen Propertys null sind.

Ich bin noch recht neu in Sachen in WPF/DataBinding, also nicht gleich bei einem vermutlich so einfachen Ding totschlagen.

Gruss,
Max

PS: MIr ist kein besserer Threadtitel eingefallen

B
387 Beiträge seit 2005
vor 13 Jahren

Hi M.Holder,

schau mal nach, ob der richtige DataContext gesetzt ist. Wäre die erste Stelle, an der ich mal nachschauen würde.

Gruß

M.Holder Themenstarter:in
71 Beiträge seit 2009
vor 13 Jahren

Hi,

muss ich den DataContext in XAML oder im ContentTreeViewItem setzen, und auf was?
Die Daten kommen von einem Hierarchialdatatemplate.

Gruss

M.Holder Themenstarter:in
71 Beiträge seit 2009
vor 13 Jahren

Hi,

ich habe noch ein wenig gegooglet und habe das jetzt so programmiert:

 public static readonly DependencyProperty IDProperty =
            DependencyProperty.Register("ID", typeof(string), typeof(ContentTreeViewItem), new UIPropertyMetadata(string.Empty, new PropertyChangedCallback(IDChangedCallBack)));
        public string ID {
            get { return (string)GetValue(IDProperty); }
            set { SetValue(IDProperty, value); }
        }

        static void IDChangedCallBack(DependencyObject property, DependencyPropertyChangedEventArgs e)
        {
            ContentTreeViewItem item = (ContentTreeViewItem)property;
            item.ID = (string)e.NewValue;
        }

Jetzt is mein ID Poperty wenigstens nicht mehr null sondern string.Empty. Das Schreiben von Daten über XAML funktioniert immernoch nicht.

Nochmal zum DataContext, ist es richtig wenn im ContentTreeViewItem den DataContext auf das MainWindow legen? Oder soll ich irgednwie auf das Hierarchialdatatemplate verweisen?

Gruss,
Max

M.Holder Themenstarter:in
71 Beiträge seit 2009
vor 13 Jahren

Hi,

hat denn kienr eine Idee?
Das hält mein kompletes Programm auf... 🙁

Gruss,
Max