Laut MSDN - Panel.InternalChildren-Eigenschaft :
Klassen, die von Panel abgeleitet sind sollte diese Eigenschaft anstelle von verwenden die Kinder Eigenschaft, für interne Überschreibungen wie als MeasureCore und ArrangeCore .
Also, das ist wirklich eine zweiteilige Frage:
Wenn ich ein eigenes Panel erstelle, FooPanel
, das von Panel
abgeleitet ist, kann ich scheinbar nicht MeasureCore
oder ArrangeCore
überschreiben. Ich bin mir nicht sicher, warum diese Aussage überhaupt da ist. Ich kann jedoch MeasureOverride
und ArrangeOverride
überschreiben. Also, ich frage mich, ob ich noch die InternalChildren
-Eigenschaft für diese 2 Methoden verwenden muss.
Was ist der wahre Unterschied zwischen der Eigenschaft Children
und der Eigenschaft InternalChildren
?
Sie würden MeasureOverride und ArrangeOverride überschreiben, was ein Fehler in der Dokumentation oder für interne Microsoft-Mitarbeiter sein muss. MeasureCore und ArrangeCore werden von FrameworkElement versiegelt, so dass Sie sie nicht überschreiben können.
Das Children-Objekt ist öffentlich und ruft einfach InternalChildren auf, das geschützt ist. Also ist beides wahrscheinlich sicher, da Kinder inline werden würden.
MSDN sagt etwas anderes ( Ссылка ), aber die Dokumentation ist falsch. (Verwenden Sie Reflektor, um zu sehen, dass die Implementierung von Children einfach InternalChildren aufruft)
BEARBEITEN: Wie CodeNaked korrigiert - MSDN-Dokumente sind in der Tat falsch. InternalChildren und Children sind gleich.
Kinder sind nur Kinder, die regelmäßig hinzugefügt wurden, während InternalChildren Kinder enthält, die durch Datenbindung hinzugefügt wurden (wenn das Panel ItemsPanelTemplate ist)
"Children repräsentiert die Child-Sammlung von Elementen, die das Panel ist bestehend aus. InternalChildren repräsentiert den Inhalt der Children Sammlung plus die Mitglieder, die durch Datenbindung erzeugt werden. Beide bestehen einer UIElementCollection von untergeordneten Elementen, die innerhalb des übergeordneten Elements gehostet werden Panel. "
siehe Ссылка
Tags und Links wpf panel children measureoverride arrangeoverride