Реализовать открыть новую вкладку - PullRequest
0 голосов
/ 22 августа 2010

как мне в C # / WPF реализовать приложение, в котором я могу открыть / закрыть новую вкладку?я думаю, мне придется создать «шаблон» пользовательского элемента управления и программно, создать новый экземпляр элемента управления (элемент вкладки) и добавить его в элемент управления вкладки?

Я новичок в C # / WPF, так как я могу начать с этим?

Другое дело, как я могу изменить или получить доступ к дочерним элементам управления, когда у меня нет идентификатора.

Ответы [ 3 ]

2 голосов
/ 22 августа 2010

Пример в этой ссылке делает более или менее точно то, что вы хотите: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Это также отличное введение в MVVM.

1 голос
/ 22 августа 2010

Вы можете сделать это очень легко с ObservableCollections.

xaml

    <TabControl ItemsSource="{Binding EmpList }">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FirstName }"></TextBlock>
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>

Код Предполагая, что вы используете MVVM

Создайте коллекцию EmpList Observable в вашей ViewModel

поэтому, когда вы добавляете новый объект в Observablecollection, управление вкладками прослушивает изменения и добавляет новую вкладку для вас.

0 голосов
/ 22 августа 2010

Это код, который я использовал.

    private void addtabbutton_Click(object sender, RoutedEventArgs e)
    {
        // We use tabItem1 and codebox as template<typename T> for the new objects.
        var tabitem = new System.Windows.Controls.TabItem();
        tabitem.ContextMenu = tabItem1.ContextMenu;
        tabitem.ContextMenuClosing += tabItem1_ContextMenuClosing;
        tabitem.ContextMenuOpening += tabItem1_ContextMenuOpening;
        tabitem.Header = "Code" + NewTabItemIndex.ToString();
        tabitem.Height = tabItem1.Height;
        tabitem.Width = tabItem1.Width;
        tabitem.HorizontalAlignment = tabItem1.HorizontalAlignment;
        tabitem.VerticalAlignment = tabItem1.VerticalAlignment;
        tabitem.DataContext = tabItem1.DataContext;
        var textbox = new System.Windows.Controls.TextBox();
        tabitem.Content = textbox;
        textbox.DataContext = codebox.DataContext;
        textbox.LayoutTransform = codebox.LayoutTransform;
        textbox.AcceptsReturn = true;
        textbox.AcceptsTab = true;
        textbox.Height = this.codebox.Height;
        textbox.HorizontalAlignment = codebox.HorizontalAlignment;
        textbox.VerticalAlignment = codebox.VerticalAlignment;
        NewTabItemIndex++;
        this.tabControl1.Items.Add(tabitem);
    }

Вы можете видеть, что я начал с одного элемента вкладки, tabItem1, в окне.Затем я по сути копирую его характеристики в новый TabItem.Затем я добавляю этот TabItem в мой TabControl.

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