【发布时间】:2013-12-06 06:48:03
【问题描述】:
我有一个绑定到可观察集合的 tabControl。 在 headerTemplate 中,我想绑定到一个字符串属性,并且在 contentTemplate 中我放置了一个用户控件。
这是 MainWindow.xaml 的代码:
<Grid>
<Grid.Resources>
<DataTemplate x:Key="contentTemplate">
<local:UserControl1 />
</DataTemplate>
<DataTemplate x:Key="itemTemplate">
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</Grid.Resources>
<TabControl IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Path=Pages}"
ItemTemplate="{StaticResource itemTemplate}"
ContentTemplate="{StaticResource contentTemplate}"/>
</Grid>
及其背后的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
}
}
public class MainWindowViewModel
{
public ObservableCollection<PageViewModel> Pages { get; set; }
public MainWindowViewModel()
{
this.Pages = new ObservableCollection<PageViewModel>();
this.Pages.Add(new PageViewModel("first"));
this.Pages.Add(new PageViewModel("second"));
}
}
public class PageViewModel
{
public string Name { get; set; }
public PageViewModel(string name)
{
this.Name = name;
}
}
所以这个场景中的问题(指定了一个 itemTemplate 和一个 controlTemplate)是我只为用户控件获得 一个 实例,我希望每个项目都有一个实例那是必然的。
【问题讨论】:
-
“我想为每个项目创建一个实例” -- 请在此处说明您的需求。 为什么您为每个项目专门创建一个新实例?请具体说明:提供一个好的minimal reproducible example 可以可靠地重现您的问题,并准确解释该代码的作用以及它与您想要它做的不同之处。 (我很抱歉迟到了......我只遇到了这个问题answering a different one;这可能与我在另一个问题中解决的问题相同,也可能不同,所以我想我会要求澄清).
标签: wpf datatemplate tabcontrol itemtemplate