2012-04-12 11 views
2

I eine TabControl haben, die vier Laschen aufweist:TabControl die Größe eines seiner Elemente nehmen

<TabControl> 
    <TabItem><TextBox/></TabItem> 
    <TabItem><UserControl/></TabItem> 
    <TabItem><Label/></TabItem> 
    <TabItem><Image/></TabItem> 
</TabControl> 

jedes der Elemente sind Standardkontrollen WPF aber die zweite, die eine kundenspezifische Benutzersteuerelement ist, haben kann eine willkürliche Größe.

Textbox bindet an eine Eigenschaft, kann aber leer sein oder einen langen Text enthalten. Gleiches mit Label.

Das Bild hat stattdessen immer die größte Größe.

Die TabControl wird in einem Fenster definiert, das die Größe abhängig von der Größe der Registerkarte ändert.

Derzeit ist das Verhalten so, dass jedes Mal, wenn ich von einer Registerkarte zu dem folgenden wechseln, das Fenster die Größe ändert.

ich auf dem verwirrten bin, ist der beste Weg, das zu erhalten, folgende:

  • Die TabControl setzt seine Größe entsprechend dem Usercontrol Größe
  • Die TextBox im TabItem Platte passen, aber wenn es die gewünschte Größe ist größer als die Größe des zweiten Panels und zeigt dann die vertikale Bildlaufleiste an
  • Sobald das Formular geladen und die Registerkarte angezeigt wird, ändert die Änderung von einer Registerkarte zur nächsten nicht die Größe des Fensters.

Haben Sie Ideen, wie dies erreicht werden kann, ohne benutzerdefinierte Steuerelemente schreiben zu müssen?

Antwort

1

sollten Sie in der Lage sein, dies ein paar Element Bindungen zu erreichen verwenden und eine Scroll:

<TabControl Name="tabControl" Height="{Binding ElementName=userControl, Path=Height}"> 
    <TabItem Header="ONE"> 
     <ScrollViewer Height="{Binding ElementName=tabControl,Path=Height}"> 
      <TextBox Height="400" VerticalAlignment="Top"/> 
     </ScrollViewer> 
    </TabItem> 
    <TabItem Header="TWO"><UserControl Name="userControl" Height="200" Width="400" /></TabItem> 
    <TabItem Header="THREE"><Label/></TabItem> 
    <TabItem Header="FOUR"><Image/></TabItem> 
</TabControl> 
+0

Diese nur explizit definiert sind, wenn die Höhe und Breite Eigenschaften scheinen zu funktionieren. – mhttk

+0

Ein zusätzlicher Vorschlag wäre, die explizite Höhe und Breite im Benutzersteuerelement zu entfernen und dann den Bindungspfad auf der Höheneigenschaft des Registersteuerelements auf ActualHeight statt auf Höhe zu ändern. – KodeKreachor

Verwandte Themen