[C# WPF] UserControl 간 Event로 연결하기

728x90

UserControl끼리 값을 주고 받을 때, 데이터는 넘어가는데 반영이 안되서 한참 헤맸다.

앞전 게시글에 이어서 UserControl간 Event로 연결을 해 줬다.

 

[C# WPF] 상단 메뉴바 만들기 (설정, 파일...)

private void Click(object sender, RoutedEventArgs e) { MessageBox.Show("ㅋ"); } 보통 화면 상단에 있는 메뉴바 만들기는 Menu 태그를 이용해 만들 수 있다. ToolBar, ToggleButton 등등.. 한참 헤멨다..

sm-lee2026210.tistory.com

 

 

메뉴 - 파일생성을 누르면 파일 이름을 입력하는 창 (Window) 가 뜨고, 거기서 이름을 입력하면 Tab이 추가되도록 하고싶었다.

즉 파일은 Tab / TabAddView(파일 이름 입력하는 창) / TopMenu 이렇게 3개임

 

MainWindow

        public MainWindow()
        {
            InitializeComponent();

            TopMenuBar.AddTabRequested += (projectName) =>
            {
                TabBar.AddNewTab(projectName);
            };

        }

 

    public partial class TabAddView : Window
    {
        public string EnteredProjectName { get; private set; }
        
        ...
        
                private string TabAdd()
        {
            string enteredProjectName = ProjectNameTextBox.Text;

            if (enteredProjectName == "")
            {
                MessageBox.Show("프로젝트명을 입력해주세요.");
            }
            else
            {
                EnteredProjectName = enteredProjectName;
                Close(); // 창 닫기
            }

            return enteredProjectName;
        }

 

     public partial class Tab : UserControl
    {
 		public Tab()
        {
            InitializeComponent();
        }

        public void InitializeTopMenu(TopMenu topMenu)
        {
            topMenu.AddTabRequested += (projectName) =>
            {
                AddNewTab(projectName);
            };
        }
        public void AddNewTab(string projectName)
        {
            TabItem newTabItem = new TabItem();
            newTabItem.Header = projectName;
            TabControl.Items.Add(newTabItem);
            TabControl.SelectedItem = newTabItem;
        }

 

참고 : 

https://creon.tistory.com/566

 

[WPF] MVVM 을 이용하는 유저컨트롤 간의 데이터 처리

인터넷 찾아보면 WPF MVVM 패턴을 구현한 거보면 대부분 이해하기 쉽다. 근데 그 예제들은 이해하기 쉬우라고 쉽게 만들어 놓은거지만 실제 사용 할려면 여러가지가 짬뽕되서 사용해야한다는거지

creon.tistory.com

 

 

728x90