我正在嘗試創建一個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>
如何保存該模板,這樣我可以那麼只需調用它,每當我想創建一個新的標籤?如果我要通過代碼創建佈局,我會創建一個函數NewTabItem(),它將創建每個控件的新實例,將它們添加到新的TabItem,然後將此TabItem添加到TabControl,例如(僞代碼):
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 2013-05-11 22:22:49
當我試圖在我的項目中做類似的事情時,該選項卡在選項卡內容區域中顯示'System.Windows.Controls.Grid',而不是在其中具有文本塊的網格。有任何想法嗎? – Anthony 2014-08-28 06:11:15