2011-09-21 117 views
0

我在主窗口下面的代码:绑定控件名称问题

<TabControl x:Name="tc" Margin="0" SelectedIndex="0"> 
    <TabItem Header="Tab 1" Width="150" 
      IsSelected="false"> 
     <!--<TextBox Width="200" Height="200"/>--> 
    </TabItem> 
</TabControl> 

我有一个mainwindowviewmodel,我想它要绑定到的是TC的controltab名称:

private void AddTab_Execute(object parm) 
{ 
    s = s + 1; 
    TabItem Item = new TabItem(); 
    Item.Width = 150; 
    Item.Header = "Tab " + s; 
    tc.Items.Add(Item); 
} 

他不” t认识tc 我必须做什么?

+0

mainwindow是否是mainwindowviewmodel代码,即它是mainwindow.xaml.cs?代码中的绑定在哪里? –

回答

4

这与binding没有任何关系,但如果你有一个,它会更容易。您不应该在视图模型中引用像TabControl这样的控件。

将TabControl的ItemsSource绑定到ObservableCollection,那么你只需要添加项目到该集合。使用ItemTemplate(标题)和ContentTemplate(标签项目内容)动态地从collecton中的项目创建标签。

2

首先,小心你如何使用单词“绑定”。这具有特别的意义,这不是你在你的例子中所做的。要查看实际绑定的含义,请查看this article

您无法从视图模型访问UI中的控件。你应该做的是将TabControl的ItemsSource绑定到viewmodel中的一个集合。如果要根据绑定到每个TabItem的项目选择不同的模板,您可以创建DataTemplateSelectors并将它们用于TabControl的ContentTemplateSelectorItemTemplateSelector