が、おそらくこれを行うための方法はたくさんありますが、ここで私の簡単な方法です:
がそれぞれ自分の同じタブの内容を定義するDataTemplateを定義します。データテンプレートのコントロールは、現在選択されているタブのビューモデルにバインドされます。私は私の例では単一のTextBlockを配置しましたが、簡単にこれを拡張することができます。
<Page.DataContext>
<Samples:TabBindingViewModels />
</Page.DataContext>
<Grid>
<Grid.Resources>
<DataTemplate x:Key="ContentTemplate"
DataType="{x:Type Samples:TabBindingViewModel}">
<TextBlock Text="{Binding Content}"/>
</DataTemplate>
</Grid.Resources>
<TabControl ContentTemplate="{StaticResource ContentTemplate}"
DisplayMemberPath="Header" ItemsSource="{Binding Items}" />
</Grid>
と、このビューモデルコード:
public class TabBindingViewModels
{
public TabBindingViewModels()
{
Items = new ObservableCollection<TabBindingViewModel>
{
new TabBindingViewModel(1),
new TabBindingViewModel(2),
new TabBindingViewModel(3),
};
}
public IEnumerable<TabBindingViewModel> Items { get; private set; }
}
public class TabBindingViewModel
{
public TabBindingViewModel() : this(0)
{
}
public TabBindingViewModel(int n)
{
Header = "I'm the header: " + n.ToString(CultureInfo.InvariantCulture);
Content = "I'm the content: " + n.ToString(CultureInfo.InvariantCulture);
}
public string Header { get; set; }
public string Content { get; set; }
}
を我々が得る:タブコントロールのスタイリングに
私はかなりこのようなtutorialこのXAMLを使用して
。より複雑なコンテンツをタブヘッダーやコンテンツに簡単に入れることができます。
タブコントロールのテンプレート全体を調べて、タブコントロールの仕組みを理解する必要があります。 BlendまたはVS11 betaを使用してテンプレートを抽出します。
タブを動的に追加/削除するには、ビューモデルのObservableCollectionに項目を追加/削除するだけです。
興味深いことに、私はプリズムについても知らなかった。 – Tower
いくつかサンプルデモアプリケーションがありますか? – Tower
残念ながら、私にはわからないし、私のアプリケーションはオープンソースではありません。ここのクイックスタートガイドは、始めるのに役立つかもしれません。立ち往生した場合は、新しい質問をしてください。 ;-)あなたが一度それに入ると、それはあまりにも難しくないことを約束します。あなたの過去の専門知識を持つhttp://msdn.microsoft.com/en-us/library/ff921153(v=pandp.sec).aspx#sec15 – senfo