Das folgende Beispiel xaml bewirkt, dass jedes Tab-Element den gleichen 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 man es richtig umgehen kann.TabControls TabItems teilen denselben Inhalt ... Nicht erwünscht
<TabControl>
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem Name="tab1" />
<TabItem Name="tab2" />
</TabControl>
Wenn zwischen tab1 und tab2 Schalt wird die gleiche TextBox verwendet, wenn ich eine neue TextBox für jeden Reiter erwarten. Wie kann ich den letzteren Fall bekommen?
Das Unterklassifizieren von TabItem und das Vornehmen einer TextBox als Inhalt ist eine Möglichkeit, aber ich möchte nur sicher sein, dass es etwas gibt, das mir fehlt.
bearbeiten
Ich weiß, dass für jeden Reiter den Inhalt explizit Einstellung wird das Problem lösen, aber die Registerkarten sind dynamisch erstellt werden. 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 des TabControl keinen deklarativen Ansatz, um dies zu lösen. 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; Für Situationen, in denen dies nicht praktikabel ist, sollte es zumindest optional sein.
Was ist Ihr Ziel? Ich bin sicher, dass wir eine Lösung für Ihr Problem auf eine andere Weise finden können, sobald wir das wissen =) – hkon
Ich habe keine gute Lösung für dieses Problem, aber ich bin wirklich an den Antworten interessiert, die auftauchen könnten. .. Dieses Verhalten ist ein echter Schmerz. Manchmal macht es Sinn, dass die Inhaltsvorlage zwischen Tabs geteilt wird, aber sehr oft nicht, normalerweise, wenn Sie eine Dokumentschnittstelle mit Registerkarten erstellen –
@hkon: Ich möchte, dass jede Registerkarte ihren eigenen Inhalt hat, wie in der Vorlage definiert Teilen einer einzigen Instanz zwischen den Tabs. Die Datenbindung sorgt dafür, dass gebundene Daten zwischen Tabs synchron gehalten werden. Dies kann jedoch zu Problemen führen. Möglicherweise hat der Benutzer eine Bildlaufleiste in einer Registerkarte angepasst, und seine Position wird dann nach dem Zurückschalten vergessen. – Siege