Ich habe geantwortet nur eine Frage over here, wo ich sagte, dass es zwischenWas bewirkt das PathGeneratedInternal-Flag in einer WPF-Bindung?
und
keinen funktionalen Unterschied{Binding Path=TargetProperty}
und, soweit mir bekannt ist, was ich geschrieben habe, ist im Grunde richtig. Aber die Idee, dass man den Konstruktor benutzt und der andere setzt die Eigenschaft, hat mich dazu gebracht zu denken, dass ein Unterschied sein könnte, also habe ich den offenen Reflektor gepeitscht und einen Blick darauf geworfen.
Der Konstruktor hat den folgenden Code in es:
public Binding(string path)
{
this._source = UnsetSource;
if (path != null)
{
if (Dispatcher.CurrentDispatcher == null)
{
throw new InvalidOperationException();
}
this._ppath = new PropertyPath(path, new object[0]);
this._attachedPropertiesInPath = -1;
}
}
Der Pfad Eigenschaft ist dies:
public PropertyPath Path
{
get
{
return this._ppath;
}
set
{
base.CheckSealed();
this._ppath = value;
this._attachedPropertiesInPath = -1;
base.ClearFlag(BindingBase.BindingFlags.PathGeneratedInternally);
}
}
Also, wenn Sie den Weg durch die Eigenschaft der PathGeneratedInternally-Flag gesetzt wird gelöscht. Nun wird dieser Flag nicht überall öffentlich direkt ausgesetzt, aber es scheint an einigen Stellen verwendet werden:
internal void UsePath(PropertyPath path)
{
this._ppath = path;
base.SetFlag(BindingBase.BindingFlags.PathGeneratedInternally);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializePath()
{
return ((this._ppath != null) && !base.TestFlag(BindingBase.BindingFlags.PathGeneratedInternally));
}
Ich bin sicher, es ist alles ziemlich belanglos, aber hat jemand da draußen weiß, was dieses Flag Mittel und warum kann es je nachdem, wie du die Bindung deklarierst, anders sein?
Gibt es also einen funktionalen Unterschied? –
@UriAbramson - Nein – CodeNaked