2016-07-25 10 views
0

タブの項目にユーザコントロールを動的に読み込もうとしていますが、できません。以下のコードを使用しています。私は様々な投稿にもアクセスしていますが、私は間違っている場所:タブの項目にユーザコントロールをロードする

ユーザーコントロール:

<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> 

のViewModel:

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?? 
    } 
} 

メインページ:

<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

上記正しいことが必要コードパッチのソリューションで見つかりましたまたはページのコードビハインドは私が尋ねる必要がある最初の質問です - あなたはどこにでもDataContextとしてVMを設定していますか? – MichaelThePotato

+0

はい、つまりメインページの背後にあります – stylishCoder

+0

@MichaelThePotato私は2つのタブを持っており、コンテンツはユーザーコントロールから読み込まれています.iiii ii tab1をクリックしてtab2を削除したいのですがどうすればいいですか? – stylishCoder

答えて

0

Iは、以下の問題は、我々は、ページ全体が表示されていないという事実を考えると掲載コード

<Style TargetType="TabItem"> 
        <Setter Property="Header" Value="{Binding Header}" /> 
        <Setter Property="Content" Value="{Binding Content}"></Setter> 
       </Style> 
関連する問題