Я пытаюсь назначить объект datacontext из TabItem. Для того, чтобы получить представление о том, рассмотрим следующий пример кодаНазначение datacontext для автогенерируемого tabitem в tabcontrol
<UserControl x:Class="CustomCopyNas.UserControls.LoginUsers"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:igWindows="http://infragistics.com/Windows"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Margin="5,0,5,0">
<igWindows:XamTabControl Name="_xamTabControl"
TabLayoutStyle="MultiRowSizeToFit"
MaximumTabRows="4"
MaximumSizeToFitAdjustment="50"
MinimumTabExtent="100"
InterTabSpacing="2"
InterRowSpacing="2"
Theme="Metro"
AllowTabClosing="False"
TabItemCloseButtonVisibility="WhenSelectedOrHotTracked">
<igWindows:XamTabControl.ContentTemplate>
<DataTemplate>
<TextBox Text="{Binding Prop}"/>
</DataTemplate>
</igWindows:XamTabControl.ContentTemplate>
</igWindows:XamTabControl>
</Grid>
</UserControl>
Как вы можете видеть, я использую DataTemplate для TabItem внешний вид контента, TextBox. Свойство TextBox Text является обязательным для свойства из datacontext.
И частичный класс от UserControl
public class Foo
{
public string Prop {
get { return "Hello Foo"; }
}
}
/// <summary>
/// Interaction logic for LoginUsers.xaml
/// </summary>
public partial class LoginUsers : UserControl
{
public LoginViewModel LoginViewModel = new LoginViewModel("file.xml");
public LoginUsers()
{
InitializeComponent();
foreach (var server in LoginViewModel.ServerUsers)
{
string header = server.Server;
string name = "tabItem" + header;
_xamTabControl.Items.Add(new TabItemEx() { Header = header, Name = name, DataContext = new Foo() });
}
}
}
В выходе на содержание TabItem У меня нет ничего, так что содержание, пуста почему?
Я использую элементы управления infragistics. Моя цель - создать динамику TabItem, зависит от количества доступных элементов. Например, если 5 элементов создадут 5 вкладок. Это потому, что выше, я делаю foreach для создания новой вкладки, зависит от элементов. –
Вы все еще можете сделать это вот так. Для каждого требуемого 'TabItem' просто добавьте еще один элемент в коллекцию' YourCollectionProperty'. Использование свойства 'ItemsSource' предпочтительнее использования свойства' Items' в WPF. – Sheridan
Я стараюсь следовать, но не работает. Https://gist.github.com/kostonstyle/b54b453ae664cf12d222 –