본문 바로가기
개발언어/WPF

[WPF] TabControl 에 UserControl 이나 Page 보여주기

by 창용이랑 2022. 8. 22.
728x90

MDI 가 안되는 관계로 해당 윈도우를 Tab 에 보여주기 위해서 ...

우선 보여줄 곳에 TabControl 을 넣어주고

<TabControl x:Name="tabContent" />
 

 

1. Page를 보여주는 방법

(예제)

// 사용자가 만든 페이지 생성 
Userpage pageN = new Userpage(); 

// 페이지를 담을 프레임을 만든다. 
Frame tabFrame = new Frame(); 
tabFrame.Content = pageN; 

// 프레임을 탭아이템의 콘텐츠로 설정한다. 
TabItem tabItem = new TabItem(); 
tabItem.Name = "tabName"; 
tabItem.Header = "New Tab"; 
tabItem.Content = tabFrame; 

// 탭 아이템을 탭에 넣어준다. 
tabContent.Items.Add(tabItem); 

// 추가한 텝을 선택해주지 않으면 화면에 보일지 않음.. 클릭해야 보이게 됨. 
tabContent.SelectedItem = tabItem; 
tabContent.Focus();

 

(샘플)

편집화면에서 item이 있다면 삭제한다.

<TabControl x:Name="tabControl_Main" HorizontalAlignment="Left" Height="597" Margin="10,63,0,0" VerticalAlignment="Top" Width="1000" SelectionChanged="tabControl_Main_SelectionChanged">           
</TabControl>

 

 

private void Window_Loaded(object sender, RoutedEventArgs e)
{   
     // 사용자가 만든 페이지 생성
    page_Extract page_extract = new page_Extract();

    // 페이지를 담을 프레임을 만든다.
    Frame tabFrame1 = new Frame();
    tabFrame1.Content = page_extract;

    // 프레임을 탭아이템의 콘텐츠로 설정한다.
    TabItem tabItem1 = new TabItem();
    tabItem1.Name = "tabName";
    tabItem1.Header = "Extract";
    tabItem1.Content = tabFrame1;

    // 탭 아이템을 탭에 넣어준다.
    tabControl_Main.Items.Add(tabItem1);

    //----------------------------------------

    // 사용자가 만든 페이지 생성
    page_Process page_process = new page_Process();

    // 페이지를 담을 프레임을 만든다.
    Frame tabFrame2 = new Frame();
    tabFrame2.Content = page_process;

    // 프레임을 탭아이템의 콘텐츠로 설정한다.
    TabItem tabItem2 = new TabItem();
    tabItem2.Name = "tabName";
    tabItem2.Header = "Process";
    tabItem2.Content = tabFrame2;

    // 탭 아이템을 탭에 넣어준다.
    tabControl_Main.Items.Add(tabItem2);
}

private void btn_Extract_Click(object sender, RoutedEventArgs e)
{
    tabControl_Main.SelectedIndex = 0;
    tabControl_Main.Focus();
}

private void btn_Process_Click(object sender, RoutedEventArgs e)
{
    tabControl_Main.SelectedIndex = 1;
    tabControl_Main.Focus();
}

private void tabControl_Main_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    int aa = tabControl_Main.SelectedIndex;

    if (aa == 0)
    {
        Console.WriteLine("Extract");
    }

    if (aa == 1)
    {
        Console.WriteLine("Process");
    }
}
 

2. UserControl 을 보여주는 방법

// 탭 아이템 생성 
TabItem tabItem1 = new TabItem(); 
tabItem1.Name = "dsds2"; 
tabItem1.Header = "New Tab"; 

// content 영역에 사용자정의 컨트롤로 만든 걸 넣어준다. 
tabItem1.Content = new UCtl.Exam.ctlExam();

tabContent.Items.Add(tabItem1); 
tabContent.SelectedItem = tabItem1; 
tabContent.Focus();

UserControl 이 조금은 짧네요.