のビューの仮想化でさまざまな問題が発生していTabControl
ます。幸いなことに、この CodeProject の記事で、すべての問題を解決できると思われるものを見つけました。
ただし、このソリューションによって 1 つの問題が発生します。それは、HeaderTemplate
. タブ ヘッダーには、コンテンツ コントロールと同じコンテンツがあります。
私のビューは、次のような TabControl を使用します。
<TabControl
behaviors:TabItemGeneratorBehavior.ItemsSource="{Binding MyItems, Mode=OneWay}"
behaviors:TabItemGeneratorBehavior.SelectedItem="{Binding MySelectedItem, Mode=TwoWay}">
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<ContentPresenter>
<ContentPresenter.Content>
<TextBlock Text="{Binding Title}"/>
</ContentPresenter.Content>
</ContentPresenter>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
</TabControl>
これbehaviors:TabItemGeneratorBehavior
は CodeProject の記事からのものです。内部にTabItemGeneratorBehavior
は、次を生成するメソッドがありますTabItems
。
private void AddTabItem(object item)
{
var contentControl = new ContentControl();
var tab = new TabItem
{
DataContext = item,
Content = contentControl,
HeaderTemplate = _tabControl.ItemTemplate
};
contentControl.SetBinding(ContentControl.ContentProperty, new Binding());
tab.SetBinding(HeaderedContentControl.HeaderProperty, new Binding());
_tabControl.Items.Add(tab);
}
私の問題は、のバインディングを設定する行にあると思いますHeaderProperty
。HeaderTemplate
上記の XAML で定義されたものを使用するようにバインディングを設定するにはどうすればよいですか?