Проблема с именем связующего элемента управления - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть в главном окне этот код:

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

У меня есть mainwindowviewmodel, и я хочу, чтобы он связался с именем controltab, которое tc:

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

hen 'не знаю, что мне делать?

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

Это не имеет ничего общего с привязкой , но было бы проще, если бы у вас была такая. Вам не нужно ссылаться на элементы управления, такие как TabControl в модели представления.

Свяжите ItemsSource TabControl с ObservableCollection, тогда вам просто нужно добавить элементы в эту коллекцию. Используйте ItemTemplate (заголовок) и ContentTemplate (содержимое элемента вкладки) для динамического создания вкладок из элементов в коллекции.

2 голосов
/ 21 сентября 2011

Прежде всего, будьте осторожны с тем, как вы используете слово «связать». Это имеет особое значение, а не то, что вы делаете в своем примере. Чтобы увидеть, что на самом деле означает привязка, ознакомьтесь с этой статьей .

Вы не можете получить доступ к элементам управления в вашем пользовательском интерфейсе из вашей модели представления. То, что вы должны сделать, это связать ItemsSource TabControl с коллекцией в модели представления. Вы можете создать DataTemplateSelectors и использовать их для TabControl ContentTemplateSelector и ItemTemplateSelector , если вы хотите выбрать разные шаблоны в зависимости от элемента, который связан с каждым TabItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...