我認爲我在尋找的是MVVM,但我看過的示例並沒有幫助,因此基於我的問題的示例應該可以提供幫助。我已經有了TabControl中的內容,所以我一直無法使用TabControl.ItemsSource = CourtCases
,因爲它會引發異常;TabControl將ItemsSource綁定到帶有現有TabItem的列表
Items collection must be empty before using ItemsSource.
...和使用可能需要更多的工作,因爲一些標籤將不得不關閉。
我有一個TabControl,其中第一個選項卡包含一個DataGrid與人員列表,我希望每當在DataGrid中單擊一個項目時,會創建一個包含該人員詳細信息的新選項卡。我想將人物對象傳遞給TabItem「範圍/類」,並顯示該人的內容。我爲人物詳細信息TabItem創建了一個DataTemplate
,您可以在下面看到它;
<TabControl Name="AttorneysTabControl" Grid.Column="2" Grid.Row="0">
<TabControl.Resources>
<DataTemplate x:Key="AttorneyTabHeader">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Attorney.Names}" Margin="2,0,0,0" FontSize="16" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AttorneyTabContent">
<StackPanel>
<TextBlock Text="{Binding Attorney.Names}" />
<TextBlock Text="{Binding Attorney.Age}"/>
<ToolBar>
<Button ToolTip="">Delete</Button>
<Button ToolTip="">Edit</Button>
</ToolBar>
</StackPanel>
</DataTemplate>
</TabControl.Resources>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Attorneys" Margin="2,0,0,0" FontSize="16" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<Grid Background="#FFE5E5E5" Height="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
...
</Grid>
</TabItem.Content>
</TabItem>
<!-- This part here -->
<!-- I want this to repeat. I think I should use a UserControl for this since I want the content to have it's own class -->
<TabItem ContentTemplate="{StaticResource AttorneyTabContent}" HeaderTemplate="{StaticResource AttorneyTabHeader}" />
</TabControl>
查看主 - 細節綁定。這是一個[SAMPLE](https://code.msdn.microsoft.com/windowsdesktop/CSWPFMasterDetailBinding-c78566ae)。 – jsanalytics
你正試圖以一種他們真正沒有設計的方式來使用控件。在這種情況下,您應該將控件包裝在UserControl中,然後公開您自己的ItemsSource DP,並在代碼隱藏中手動管理選項卡。 – Will
是的,這就是我所做的。我意識到這是不可能的。 – LogicDev