wpf form in einen Tabcontrol laden

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    wpf form in einen Tabcontrol laden

    Hallo

    Ich hab ein WPF Windowsform in dem ich ein Tabcontrol habe. in diesen Tabcontrol möchte ich einen andern WPF Windowsform laden.
    Sie wie man das aus einen Browser kennt.

    Wie muss ich das in Button code realisieren das ein weiterer WPF Windowsform in einen Tabcontrol geladen wird und ein neues Tab eröffnet wird.

    in alten Windowsform hat man das so gelöst

    VB.NET-Quellcode

    1. Dim f As New Form2
    2. f.TopLevel = False
    3. f.FormBorderStyle = FormBorderStyle.None
    4. f.Dock = DockStyle.Fill
    5. f.Show()
    6. TabPage1.Controls.Add(f)


    Wie macht man das bei WPF

    Beiträge zusammengefügt. ~Trade

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Du kannst das Ganze über ein UserControl lösen, welches innerhalb des Tabs eingefügt wird:

    Spoiler anzeigen
    MainWindow:

    XML-Quellcode

    1. <Window x:Class="UserControlTest.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:UserControlTest"
    7. mc:Ignorable="d"
    8. Title="MainWindow" Height="350" Width="525">
    9. <Grid>
    10. <TabControl>
    11. <TabControl.Items>
    12. <TabItem Header="Tab 1">
    13. <local:PersonViewer />
    14. </TabItem>
    15. <TabItem Header="Tab 2">
    16. <local:PersonViewer />
    17. </TabItem>
    18. </TabControl.Items>
    19. </TabControl>
    20. </Grid>
    21. </Window>


    PersonView UserControl:

    XML-Quellcode

    1. <UserControl x:Class="UserControlTest.PersonViewer"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. xmlns:local="clr-namespace:UserControlTest"
    7. mc:Ignorable="d"
    8. d:DesignHeight="300" d:DesignWidth="300">
    9. <Grid>
    10. <Grid.RowDefinitions>
    11. <RowDefinition />
    12. <RowDefinition />
    13. </Grid.RowDefinitions>
    14. <Grid.ColumnDefinitions>
    15. <ColumnDefinition />
    16. <ColumnDefinition />
    17. </Grid.ColumnDefinitions>
    18. <TextBlock Grid.Row="0" Text="Vorname"/>
    19. <TextBlock Grid.Row="1" Text="Nachname"/>
    20. <TextBox Grid.Row="0" Grid.Column="1" />
    21. <TextBox Grid.Row="1" Grid.Column="1" />
    22. </Grid>
    23. </UserControl>


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hallo

    Danke das geht.

    nun hab ich ein Ribbon Menü und möchte jetzt wenn man auf ein Ribbon Button clickt ein neues Tabform aufgeht mit Close Button wo das UserControl geladen wird.

    Mein Tabcontrol ist jetzt erstmal noch so

    XML-Quellcode

    1. <TabControl>
    2. <TabItem>
    3. <TabItem.Header>
    4. <StackPanel Orientation="Horizontal">
    5. <TextBlock>Übersicht</TextBlock>
    6. <Button x:Name="B_TAB_Close">X</Button>
    7. </StackPanel>
    8. </TabItem.Header>
    9. <StackPanel>
    10. </StackPanel>
    11. </TabItem>
    12. </TabControl>


    Wie kann ich mit dem Ribbonbutton ein neues Tabitem öffnen mit Close Button und UserControl
    Ich kann ja in Private Sub doch keine xaml code einfügen oder

    VB.NET-Quellcode

    1. Private Sub RB_Uebersicht_Click(sender As Object, e As RoutedEventArgs) Handles RB_Uebersicht.Click
    2. End Sub


    Wie kann man das richtig lösen hab im Internet auch nix gefunden
    Sieh dir dazu mal das MVVM (Model-View-Viewmodel) Pattern an. In WPF kann man mit der Möglichkeit des Databindings und diesem Pattern unter anderem solche Dinge erstellen.
    Dein Tabcontrol hätte dann für die Tabpages im Hintergrund (Viewmodel) eine ObservableCollection<T> liegen welche die angezeigten Tabs repräsentiert. Bei Klick auf einem Button würde ein Command verwendet werden, welches der Collection ein Item hinzufügt. Anschließend würde dann automatisch ein neues Tab angezeigt werden. Selbes beim Klick auf X wo dieses Tab dann aus der Collection entfernt werden würde.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten