Есть пример, давайте его разберем кратко. Есть главная страница MainPage.xaml:
<UserControl
Так же есть небольшой класс SuperTab (его-то и будем в закладки запихивать):
public class SuperTab
{
public string Header { get; set; }
public string SomeContent { get; set; }
}
И еще есть простенький ViewModel:
И, собственно говоря, звезда номера класс TabControlHelper, который и сделает всю "грязную работу":
public class TabControlHelper
{
#region ItemsCollection
/// <summary>
/// свойство ItemsCollection
/// </summary>
public static readonly DependencyProperty ItemsCollectionProperty =
DependencyProperty.RegisterAttached("ItemsCollection", typeof(IEnumerable), typeof(TabControl),
new PropertyMetadata(null, new PropertyChangedCallback(OnItemsCollectionChanged)));
/// <summary>
/// Геттер свойства ItemsCollection.
/// </summary>
public static IEnumerable GetItemsCollection(DependencyObject d)
{
return (IEnumerable)d.GetValue(ItemsCollectionProperty);
}
/// <summary>
/// Сеттер свойства ItemsCollection.
/// </summary>
public static void SetItemsCollection(DependencyObject d, IEnumerable value)
{
d.SetValue(ItemsCollectionProperty, value);
}
Read more: МУСОРКА - НАЙДИ ЛУЧШЕЕ!
<UserControl
x:Class="TabControlBinding.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:local="clr-namespace:TabControlBinding"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<UserControl.DataContext>
<local:ViewModel />
</UserControl.DataContext>
<Grid
x:Name="LayoutRoot"Background="White"><Controls:TabControlGrid.Row="1"local:TabControlHelper.ItemsCollection="{Binding Path=Collection}"></Controls:TabControl>
</Grid></UserControl>
Так же есть небольшой класс SuperTab (его-то и будем в закладки запихивать):
public class SuperTab
{
public string Header { get; set; }
public string SomeContent { get; set; }
}
И еще есть простенький ViewModel:
И, собственно говоря, звезда номера класс TabControlHelper, который и сделает всю "грязную работу":
public class TabControlHelper
{
#region ItemsCollection
/// <summary>
/// свойство ItemsCollection
/// </summary>
public static readonly DependencyProperty ItemsCollectionProperty =
DependencyProperty.RegisterAttached("ItemsCollection", typeof(IEnumerable), typeof(TabControl),
new PropertyMetadata(null, new PropertyChangedCallback(OnItemsCollectionChanged)));
/// <summary>
/// Геттер свойства ItemsCollection.
/// </summary>
public static IEnumerable GetItemsCollection(DependencyObject d)
{
return (IEnumerable)d.GetValue(ItemsCollectionProperty);
}
/// <summary>
/// Сеттер свойства ItemsCollection.
/// </summary>
public static void SetItemsCollection(DependencyObject d, IEnumerable value)
{
d.SetValue(ItemsCollectionProperty, value);
}
Read more: МУСОРКА - НАЙДИ ЛУЧШЕЕ!