2010-08-22 8 views
0

어떻게 C#/WPF에서 새 탭을 열거 나 닫을 수있는 응용 프로그램을 구현할 수 있습니까? 나는 "템플릿"사용자 정의 컨트롤을 만들고 프로그래밍 방식으로 컨트롤 (탭 항목)의 새 인스턴스를 만들고 탭 컨트롤에 추가해야 할 것이라고 생각하고 있습니까?새 탭 열기 구현

저는 C#/WPF에 익숙하지 않으므로 어떻게 시작해야합니까?

또 다른 문제는 ID가없는 경우 어떻게 수정하거나 자식 컨트롤에 액세스 할 수 있는지입니다.

+0

http://stackoverflow.com/questions/3468866/wpf-tabcontrol-add-new-tab-button – NVM

답변

2

이 링크의 예 않습니다 더 많거나 적은 정확하게 당신이 원하는 : http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

또한 MVVM에 큰 소개입니다.

+0

MVVM을 시작하려고하는데 이전에이 기사를 보았지만 시작하기가 어려웠습니다. , 어쩌면 나는 C#/WPF에 익숙하지 않다. 하지만 공유 할 다른 MVVM 링크가 있습니까? 어쩌면 비디오 자습서? 나는 때로는 비디오를 더 잘 배웁니다. –

+0

나는 어떤 비디오 링크도 편리하지 않지만 (채널 9 검색 제안), 한 번에 하나의 개념에 집중할 것을 권장합니다. 처음에는 WPF가 가장 쉬운 승리를 얻은 것처럼 보였으 나 일단 MVVM을 다시 사용해보십시오. – cristobalito

0

이것은 내가 사용한 코드입니다.

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에 추가합니다.

1

ObservableCollections와 함께이 작업을 수행 할 수 있습니다.

XAML

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

코드 Asumeing 당신이 ObservableCollection에에 새로운 객체를 추가 할 때

그래서 당신의 ViewModel에 EmpList ObservableCollection에 만들기

MVVM

를 사용하고, 탭 컨트롤이 변경 내용을 듣고 새 탭을 추가하십시오.