Jeśli chcesz, aby kod był łatwiejszy w zarządzaniu, zalecamy zdefiniowanie danych każdej karty w formancie użytkownika, ale nadal mam TabItem w kontrolce głównej.
Załóżmy, że oryginalny kod był następujący:
<TabControl>
<TabItem Header="Tab 1">
<Grid>
<TextBlock Text="Tab Data" />
</Grid>
</TabItem>
</TabControl>
aby kod łatwiejsze można złamać zawartość zakładki do UserControl, takie jak:
<UserControl x:Class="WpfApplication19.Tab1Data"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Grid>
<TextBlock Text="Tab Data" />
</Grid>
</UserControl>
a następnie użyć tego użytkownika kontroluj w TabControl w ten sposób:
<TabControl>
<TabItem Header="Tab 1">
<tabData:Tab1Data />
</TabItem>
</TabControl>
Jeśli naprawdę chcesz włączyć e TabItem w kontroli użytkownika, możesz to zrobić, najpierw tworząc formant użytkownika, a następnie zmień typ kontrolki użytkownika na typ TabItem (upewnij się, że zmieniłeś to zarówno w głównym węźle xaml, jak i w kodzie).
To zostawiają cię z formantu karty, która wygląda tak:
<TabControl>
<tabData:TabItem1 />
<tabData:TabItem2 />
<tabData:TabItem3 />
</TabControl>
i każdy TabItem1 "kontrola użytkownika będzie typu TabItem. Oto przykład:
<TabItem x:Class="WpfApplication19.TabItem1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Header="Tab 1"
>
<Grid>
<TextBlock Text="Tab Data" />
</Grid>
</TabItem>
I jak już wspomniałem, należy zmienić kod tyłu tak, że rozciąga TabItem zamiast kontroli użytkownika:
public partial class TabItem1 : TabItem
{
public TabItem1()
{
InitializeComponent();
}
}
Dziękuję bardzo. Działa idealnie, jak pokazano w odpowiedzi! –
tabdata pochodzi skąd? –
Skąd się wzięła własność 'xmlns'? O ile mi wiadomo, wymaga to obcego zgromadzenia. –