2016-07-25 7 views
0

Ich versuche, Benutzersteuerung in Tab-Element dynamisch zu laden, aber ich bin nicht in der Lage zu tun, ich benutze unter Code. Ich habe verschiedene Beiträge auch besucht, aber ich habe den unteren Weg bitte lass es mich wissen wo ich bin falsch:Load Benutzer-Steuerelement in Tab-Element

Benutzerverwaltung:

<UserControl x:Class="WpfApplication1.UserControl2" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WpfApplication1" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 
     <Button Content="welcome" Height="20" Width="70"></Button> 
    </Grid> 
</UserControl> 

Ansichtsmodell:

namespace WpfApplication1 
{ 
    class Usercontrol2ViewModel 
    { 
     public ObservableCollection<TabItem> Tabs { get; set; } 

     public Usercontrol2ViewModel() 
     { 
      Tabs = new ObservableCollection<TabItem>(); 
      //Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection? 
      Tabs.Add(new TabItem { Header = "Overview", Content = new UserControl2() }); 

     } 

    } 
    public class TabItem 
    { 
     public string Header { get; set; } 
     public object Content { get; set; } // object to allow all sort of items?? 
    } 
} 

Mainpage:

<TabControl x:Name="MyTabControl" 
      ItemsSource="{Binding Tabs}"> 

      <TabControl.Resources> 
       <DataTemplate DataType="{x:Type local:Usercontrol2ViewModel}"> 
        <local:UserControl2></local:UserControl2> 
       </DataTemplate> 

      </TabControl.Resources> 

      <TabControl.ItemContainerStyle> 
       <Style TargetType="TabItem"> 
        <Setter Property="Header" Value="{Binding Header}" /> 
       </Style> 
      </TabControl.ItemContainerStyle> 

     </TabControl> 
+1

In Anbetracht der Tatsache, richtig muss sein, dass wir nicht die ganze Seite sehen oder der Code der Seite - hinter der ersten Frage, die ich stellen muss - stellen Sie die VM als DataContext irgendwo ein? – MichaelThePotato

+0

Ja, d. H. Hinter der Hauptseite – stylishCoder

+0

@MichaelThePotato Ich habe zwei Registerkarten und Inhalt wird von Benutzersteuerelement geladen .. Jetzt möchte ich Tab2 von der Schaltfläche klicken von tab1..wie kann ich das tun ??? – stylishCoder

Antwort

0

ich das Problem wie folgt zu finden die Lösung von Code Patch ist, die oben gepostet Code

<Style TargetType="TabItem"> 
        <Setter Property="Header" Value="{Binding Header}" /> 
        <Setter Property="Content" Value="{Binding Content}"></Setter> 
       </Style> 
Verwandte Themen