WPF로 응용 프로그램을 작성하고 있으며 그 중 일부는 사용자 정의 내부 장치를 구성하는 데 사용되는 다양한 파일을 관리합니다. 동일한 TabControl에서 여러 유형의 구성을 탭에서 조작 할 수 있어야합니다. 즉, TabItem의 내용을 동적으로 생성해야합니다. ControlTemplates를 사용하여이 작업을 수행하고 싶지만 작업 템플릿을 아직 성공적으로 가져 오지 못했습니다. 내 창 리소스에 정의 된 "pendantConfigurationTabItemTemplate"이라는 ControlTemplate이 있고 TabItems에 액세스해야하는 명명 된 항목이 들어있는 템플릿을 적용하고 부모 TabControl에 추가하려면 다음 코드를 사용합니다.WPF의 템플릿을 기반으로 런타임에 다른 내용으로 TabItem을 만듭니다.
<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;
, 더 탭 대신 탭 컨트롤 (겉으로는) 교체 또는 템플릿의 내용이 적용됩니다, 탭 컨트롤에 추가되지 얻을. 누군가 제발 저를 도와주세요.
효과적으로, 내가 뭘 원하는
가 있다고 나는이 다음과 같이 보일 것 같아 중대한 응답, 나는 그것을 쏜다. 그러나, 나는 DataTemplates 더 많은 데이터를 표시하기위한 의도와 ControlTemplates는 사용이 가능한 컨트롤로 사용하기 위해 만들어야 UserControls의 수를 줄이기 위해 의도되었다고 생각합니까?탭에 표시/데이터 바인딩되는 객체를 편집 할 수 있어야합니다. –
두려워하지 마십시오. DataTemplates는 * 및 편집 * 데이터를 표시하기위한 것입니다. 그들은 표시되는 개체를 업데이트하는 UI 요소를 절대적으로 포함 할 수 있습니다. DataTemplate의 요소 바인딩이 양방향인지 확인하십시오 (이 컨트롤은 텍스트 상자의 기본값이지만 모든 컨트롤의 기본값은 아닙니다). ControlTemplates는 컨트롤의 UI를 변경하면서 기존 동작 (예 : Button을 일반적인 버튼 크롬없이 독립형 그래픽으로 표시하거나 TabControl을 캐 러셀, rolodex 또는 (노트북)으로 표시합니다. – itowlson
귀하의 제안이 효과가있었습니다. 정말 고마워, 정말 고마워. :) –