동적 탭 수가있는 WPF 탭 창을 만들려고합니다. 그러나 각 탭은 동일하게 형식이 지정되며 동일한 컨트롤 (동일한 인스턴스는 아니지만 동일한 컨트롤 클래스)을 포함합니다.xaml에서 탭 템플릿 만들기
<TabItem>
<TabItem.Header>
<TextBlock>C1</TextBlock>
</TabItem.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="1" Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Column="0">Ancorage</Label>
<ComboBox Grid.Column="1" Width="65" SelectedIndex="1">
<ComboBoxItem>Active</ComboBoxItem>
<ComboBoxItem>Passive</ComboBoxItem>
</ComboBox>
<Label Grid.Column="3" HorizontalAlignment="Right">Ancorage</Label>
<ComboBox Grid.Column="4" Width="65" HorizontalAlignment="Right">
<ComboBoxItem>Active</ComboBoxItem>
<ComboBoxItem>Passive</ComboBoxItem>
</ComboBox>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Column="0"># Sections</Label>
<xctk:IntegerUpDown Grid.Column="1" Minimum="3" Value="3" ></xctk:IntegerUpDown>
</Grid>
</Grid>
</TabItem>
어떻게 내가 새 탭을 생성 할 때마다 그때 간단하게 호출 할 수 있도록이 서식 파일을 저장합니까 : 각각의 탭은 다음과 같은 형태를 가질 것인가?
코드로 레이아웃을 만들려면 각 컨트롤의 새 인스턴스를 만들고 새 TabItem에 추가 한 다음이 TabItem을 TabControl에 추가하는 등의 NewTabItem() 함수를 만듭니다 (예 : 의사 코드) :
void NewTabItem()
{
Combobox box1 = new Combobox();
Combobox box2 = new Combobox();
//... etc
TabItem tab = new TabItem();
tab.Add(box1);
tab.Add(box2);
tabControl.Add(tab);
}
이 방법은 각 컨트롤은 새로운 인스턴스이며, TabControl에이 중 하나를 추가 아무 문제가 없어야합니다. XAML을 사용하여 어떻게 할 수 있습니까?
통해 ControlTemplate
? 내가 본 바로는 개별 컨트롤의 미학을 제어하기위한 것이지 컨트롤 컬렉션이 아닙니다.
통해 ItemsControl
? 이것은 단순히 XAML에서 정의하는 방법과 tabControl에 추가 할 새 인스턴스를 호출하는 방법을 파악할 수 없습니다 (또는 해당 항목을 tabControl에 추가하는 방법).
다른 방법을 통해? 이 작업을 수행 할 수 있습니까? 아니면이 레이아웃을 프로그래밍 방식으로 작성해야합니까?
많은 감사합니다, 매력처럼 일이! – Wasabi
내 프로젝트에서 비슷한 일을하려 할 때, 탭은 그 안에 텍스트 블록이있는 격자 대신 탭 내용 영역에'System.Windows.Controls.Grid'를 표시하고 있습니다. 어떤 아이디어? – Anthony