タブを動的に作成するTabControlがあります。私はTabItemのタイトルを変更するのが難しいと思っています。私はこのようなTabControl.Resources
からHeaderTemplate
を設定し、それぞれのTabItemについてWPF子要素をナビゲートするか、動的に作成された子要素を追跡する
<TabControl Name="AttorneysTabControl" Grid.Column="2" Grid.Row="0">
<TabControl.Resources>
<DataTemplate x:Key="AttorneyTabHeader">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Names}" Margin="2,0,0,0" FontSize="16" VerticalAlignment="Center" />
<Button Width="Auto" UseLayoutRounding="False" BorderBrush="Transparent" Background="Transparent" Click="CloseAttorneysTabButtonClick">
<Image Source="/images/close-cross-thin-circular-button/close-cross-thin-circular-button16.png" Height="16"></Image>
</Button>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AttorneyTabContent">
<local:AttorneyDetails></local:AttorneyDetails>
</DataTemplate>
</TabControl.Resources>
。
newTabItem.HeaderTemplate = (System.Windows.DataTemplate)AttorneysTabControl.FindResource("AttorneyTabHeader");
しかし、テンプレートが設定されたら、TabItemヘッダーの内容を変更する方法はわかりません。私はTabContemのためにDataContextを使用しようとしましたが、それはそれを行う方法ですが、うまくいかなかったので、テンプレートにBinding
を使用するだけでした。それははるかに簡単になります。
newTabItem.HeaderTemplate = (System.Windows.DataTemplate)AttorneysTabControl.FindResource("AttorneyTabHeader");
var tabItemData = new TabItemData() { Name="Initial name"} ;
newTabItem.DataContext = tabItemData;
そして、あなたはタブヘッダー更新する必要が一度:
'TabContem.ItemContainerStyle'は' TabItem'を定義し、 'Header'を変更/バインドすることができます。 – Sinatr
https://stackoverflow.com/questions/5650812/how-do-i-bind-a-tabcontrol-to-a-collection-of-viewmodels –
私は 'newTabItem.HeaderTemplate =(System。 Windows.DataTemplate)AttorneysTabControl.FindResource( "AttorneyTabHeader"); 'HeaderTemplateを設定します。このテンプレートはTabControl内にあります。 – LogicDev