Das folgende Beispiel "xaml" bewirkt, dass jedes Tab-Element denselben TextBox verwendet. Es macht Sinn, auf einer Ebene, denke ich ... aber es ist unerwartetes Verhalten und fühlt sich fast wie ein Käfer an. Und ich konnte keine Informationen in den Dokumenten finden, die das Verhalten erklären oder wie ich mich richtig zurechtfinde.
%Vor%Beim Wechseln zwischen tab1 und tab2 wird dieselbe TextBox verwendet, wenn ich für jede Registerkarte eine neue TextBox erwarten würde. Wie kann ich den letzteren Fall bekommen?
Das Unterklassifizieren von TabItem und das Vornehmen seines Inhalts zu einer TextBox ist eine Möglichkeit, dies zu tun, aber ich möchte nur sicher sein, dass etwas fehlt, das mir fehlt.
Bearbeiten
Mir ist klar, dass das Einstellen des Inhalts für jede Registerkarte das Problem löst, aber die Registerkarten dynamisch erstellt werden müssen. Ich möchte die Inhaltsvorlage verwenden, damit ich neue Registerkarten über die Datenbindung hinzufügen kann und den Inhalt nicht teilen kann, da dies zu merkwürdigem Verhalten führt.
Vielleicht gibt es bei der aktuellen Implementierung von TabControl keinen deklarativen Lösungsansatz. Es ist ziemlich trivial, den Inhalt im Code zu setzen, aber solche Dinge fühlen sich in WPF immer falsch an. Das scheint mir eine ungerechtfertigte Optimierung des TabControl zu sein; es sollte zumindest für Situationen optional sein, in denen es nicht praktikabel ist.
Ich vermute, es gibt einen schöneren Weg, um das zu erreichen, was Sie erreichen wollen, aber ich denke, das wird funktionieren (würde testen, aber ich bin auf Linux atm):
%Vor%Es funktioniert, wenn Sie ein Benutzersteuerelement definieren, das den Tab-Inhalt enthält. Ich habe folgende Benutzerkontrolle erstellt:
%Vor%Dann habe ich mein Fenster xaml so verändert:
%Vor%Dies ist möglicherweise nicht genau das, was Sie wollen, aber zumindest ist das Layout jeder Registerkarte nur an einer Stelle definiert und Sie können dann jeder Benutzersteuerung einen Datenkontext zuweisen, um die Werte für jede Ihrer Registerkarten anzuzeigen.
Ich hatte das gleiche Problem und fand in diesem Beitrag, warum dies passiert und wie man es umgehen kann. Dies ist der Link, nur für den Fall, dass jemand anderes mit dem gleichen Problem kommt:
Tags und Links wpf tabcontrol