私は WPF を使用してアプリケーションを作成しています。その一部には、カスタムの社内デバイスを構成するために使用されるさまざまなファイルをユーザーが管理することが含まれます。同じ TabControl 内のタブでさまざまな種類の構成を操作できるようにする必要があります。つまり、TabItems のコンテンツを動的に生成する必要があります。ControlTemplates でこれを行いたいのですが、まだ機能するテンプレートを取得できていません。Window リソースで定義された「pendantConfigurationTabItemTemplate」という ControlTemplate があり、次のコードを使用してテンプレート (アクセスする必要がある名前付きアイテムを含む) を TabItems に適用し、それらを親 TabControl に追加します。
<ControlTemplate x:Key="pendantConfigurationTabItemTemplate" TargetType="TabItem">
<StackPanel Orientation="Vertical">
<my:PendantConfigurationFileEditor x:Name="configurationEditor"/>
<StackPanel Style="{StaticResource defaultOkCancelButtonsContainerStyle}">
<Button Style="{StaticResource defaultOkCancelButtonStyle}"/>
<Button Style="{StaticResource defaultOkCancelButtonStyle}" Click="OkButton_Click"/>
</StackPanel>
</StackPanel>
</ControlTemplate>
コードビハインド:
TabItem ConfigTab = new TabItem();
switch (ConfigFile.Device)
{
case DeviceType.PENDANT:
{
ControlTemplate TabTemplate = Resources["pendantConfigurationTabItemTemplate"] as ControlTemplate;
ConfigTab.Template = TabTemplate;
ConfigTab.ApplyTemplate();
object Editor = TabTemplate.FindName("configurationEditor", ConfigTab);
PendantConfigurationFileEditor ConfigFileEditor = Editor as PendantConfigurationFileEditor;
ConfigFileEditor.PendantConfiguration = DeviceConfig;
break;
}
default:
/* snipped */
return;
}
ConfigTab.Header = ConfigFile.ConfigurationName;
this.EditorTabs.Items.Add(ConfigTab);
this.EditorTabs.SelectedIndex = this.EditorTabs.Items.Count - 1;
ただし、プログラムを実行するたびに、タブコントロールにタブが追加されず、代わりにタブコントロールが(一見)テンプレートのコンテンツに置き換えられるかカバーされます。誰かがこれで私を助けてくれますか?
事実上、私がやりたいことは、WPF テンプレートを TabItem ファクトリとして使用することです