Frage

Was sind die Unterschiede zwischen einer Bindungsselbstbezogen über Namen im Vergleich zu selbstbezogen über Relative zu machen?

Zum Beispiel:

<!-- Self referential via name -->
<Window ...
    x:Name="This"
    DataContext="{Binding Path=Data, ElementName=This}"/>

Vergleich

<!-- Self referential via RelativeSource -->
<Window ...
    x:Name="This"
    DataContext="{Binding Path=Data, RelativeSource={RelativeSource Self}}"/>

In meinem Projekt scheinen sie identisch zu verhalten, aber ich bin mit ihnen direkt in einem Fenster. Das bedeutet, dass ich sofort die ehemaligen bevorzugen, weil es weniger tippen ist.

Ist der einzige Vorteil von Relative seine Fähigkeit, selbstbezogen in (z) eine weit verbreitete Art zu sein? Oder gibt es einen zusätzlichen semantischen Unterschied?

War es hilfreich?

Lösung

Caveat: Kein WPF-Assistent

Wenn Sie direkt auf ein WPF-Element gebunden ist, wie in Ihrem Beispiel gibt es keinen Unterschied. „Das“ ist auflösbar und wird auf das gleiche Element wie Selbst binden.

Mein Verdacht ist, der Unterschied liegt, wenn Sie über Konstrukte wie Stil sind verbindlich. In diesem Fall, was Sie tatsächlich binden wollen, ist das Element der Stil angewendet wird. In diesem Fall Relativeselbst werden Ihnen das Element geben, wo „die“ werden Sie nur eine der Style-Instanz.

Andere Tipps

Wenn Sie neigen dazu, die Namen Ihrer Kontrollen viel dann mit dem Selbst refrential Form Refactoring kann mehr wünschen sonst würde ich sagen, es ist ein Anruf ich auf Leistung machen basieren würde. Konstruieren Sie einen kleinen Test und sehen, welche Art von führt eine bessere Bindung und dass man wählen. Wenn der Performance-Unterschied vernachlässigbar ist, dann würde ich auf jeden Fall in Betracht nimmt andere Wartbarkeit Überlegungen, wie das allgemeine Erscheinungsbild und die Zeit zu geben. Vergessen Sie auch nicht, wenn der Selbstreferenzformular Sie müssen nicht Ihr Element nennen, so dass Sie, dass zusätzliche Benennung Voraussetzung für die Element Form enthalten müssen bei einem Vergleich, wie viel Typisierung und Zusammenhang zwischen der Maus und Tastatur wechseln.

Persönlich bevorzuge ich die Referenz Bindung bildet, wenn es sinnvoll, für die Zwecke der leichteren Refactoring und die Tatsache ausnutzt, dass muss ich nicht um meine XAML Dokument verschieben einen Elementnamen hinzufügen, wenn ich die Bindung aufgebaut.

Warum denken Sie, dass es einen Unterschied zwischen ihnen ist? Ich denke, dass sie identisch sein sollten, da sie zwei Möglichkeiten, auf das gleiche Element Bezug genommen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top