【发布时间】:2015-04-16 22:07:46
【问题描述】:
我正在使用 MVVM,我正在尝试绑定一个 TabControl's ItemsSource,我使用了这个代码:
<TabControl ItemsSource="{Binding ProjectComponents}"
SelectedIndex="{Binding SelectedMenu, Mode=TwoWay}" Grid.Column="1" Margin="5">
对于视图模型:
projectComponents = new ObservableCollection<TabItem>();
projectComponents.Add(new TabItem()
{
Content = new ProjectComponentsView()
{
DataContext = new ProjectClientHandlerViewModel()
}
});
我在Silverlight项目中使用了这个,效果很好,但是在WPF中,我不知道为什么TabItem的内容没有显示。
编辑:
我将我的代码编辑为:
查看:
<TabControl ItemsSource="{Binding ProjectComponents}" SelectedIndex="{Binding SelectedMenu, Mode=TwoWay}" Grid.Column="1" Margin="5">
<TabControl.ContentTemplate>
<DataTemplate >
<this:ProjectComponentsView DataContext="{Binding}"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
查看模型:
projectComponents = new ObservableCollection<ProjectComponentViewModel>();
projectComponents.Add(new ProductViewsHandlerViewModel());
其中ProjectComponentViewModel 是ProductViewsHandlerViewModel 的基类,但它仍然不起作用。
【问题讨论】:
-
我不认为这是同一个问题,您发布的副本是用于模式指南,我的问题是为什么绑定没有发生,因为在 Silverlight 中它确实工作得很好
-
在视图模型中使用 TabItem 类型不是 mvvm。您应该有一个对象集合(视图模型)并将其绑定到 tabcontrol 的 itemssource。
标签: c# wpf silverlight mvvm