Я пишу приложение с WPF, и часть его включает в себя управление для пользователя различными файлами, которые используются для настройки пользовательских внутренних устройств. Мне нужно иметь возможность манипулировать различными типами конфигураций на вкладках одного и того же элемента управления TabControl, что означает, что содержимое элементов вкладок должно создаваться динамически. Я хотел бы сделать это с помощью ControlTemplates, но мне пока не удалось получить рабочий шаблон. У меня есть ControlTemplate под названием «pendantConfigurationTabItemTemplate», определенный в моих ресурсах Window, и я использую следующий код, чтобы применить шаблон (который содержит именованный элемент, к которому мне нужно получить доступ) к 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.