좋아요, 그래서 그림을 표시하는 PictureWindow라는 창이 있습니다 (나는 탭을 만드는 것과 관련없는 코드를 잘라 냈습니다). TabControl의 이름은 "itemsTab"입니다. 버튼 누르기를 사용하면 새 탭을 아무 문제없이 만들 수 있습니다. 그러나 호출 된 메소드 내에서 동일한 연산을 사용하면 작동하지 않습니다. buttonTab_Click 메서드를 사용하면 새 탭이 만들어지며 newTab 메서드는 그렇지 않습니다.
내가 볼 수있는 유일한 차이점은 보낸 사람 및 RoutedEventArgs 개체 때문입니다. 이러한 효과가 여기에 어떻게 영향을 줍니까? 아니면 제가 놓친 다른 것이 있습니까?
미리 감사드립니다.
편집하다새로운 것을 만들려면 newTab 메서드가 PictureWindow 생성자 메서드에서 호출 된 경우에만 새 탭을 만듭니다. 다음과 같은 경우 새 탭이 만들어집니다.
public PictureWindow(string current) { InitializeComponent(); newTab(current); }
그러나 내가 다른 곳에서 그 메소드를 호출하면 작동하지 않는다.
public partial class PictureWindow : Window { public PictureWindow(string current) { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { } private void buttonClose_Click(object sender, RoutedEventArgs e) { this.Close(); } private void buttonTab_Click(object sender, RoutedEventArgs e) { TabItem newTab = new TabItem(); newTab.Header = "New Tab!"; itemsTab.Items.Add(newTab); } public void newTab(string current) { TabItem newTab = new TabItem(); itemsTab.Items.Add(newTab); } }
var newWindow = new PictureWindow(fileName); var window = newWindow.getCurrentPictureWindow(); window.newTab(fileName);
getCurrentPictureWindow를 사용하여 오른쪽 창을 선택하면 탭이 성공적으로 추가되었습니다. - Irish Yobbo