2010-12-05 7 views
0

사용하려고하는 TimeoutPanel이라는 사용자 지정 WPF 사용자 정의 컨트롤이 있습니다. 그러나, .cs 파일에서 내 창에 추가하려고하면 실제로 나타나지 않습니다.사용자 정의 사용자 정의 컨트롤이 WPF 창에 나타나지 않습니까?

타임 아웃 화면을 소유 한 창에 대한 핸들을 얻을 수 있어야합니다.

TimeoutPanel tp = new TimeoutPanel(this); 
tp.Visibility = Visibility.Visible; 

누군가 내가 잘못하고있는 것을 지적 할 수 있다면 정말 고맙겠습니다! 편집

: 여기 내 TimeoutPanel의 생성자입니다

public TimeoutPanel(Window parent) 
{ 
    this.InitializeComponent(); 
    parentWindow = parent; 
} 

나는 홈 화면 창에 대한 .cs 파일에 다음 코드로 호출 오전 :

TimeoutPanel tp = new TimeoutPanel(this); 
MainGrid.Children.Add(tp); 

그것은 예외와 충돌 : 추가 정보 : 'TicketBooth.TimeoutPanel'유형의 개체를 만들 수 없습니다. CreateInstance가 실패했습니다. 이는 'TicketBooth.TimeoutPanel'에 대한 공용 기본 생성자가 없기 때문에 발생할 수 있습니다. 'TicketBooth; component/homescreen.xaml'줄 174 위치 10의 'System.Windows.Controls.Grid'개체에서 오류가 발생했습니다.

감사!

+0

아, 미안해! 예외는 내 부분의 오타였습니다 ... 지금 작동하는 것 같습니다! 도와 주셔서 감사합니다! – ksamurai

답변

1

WPF 응용 프로그램의 Window에 UserControl을 배치합니다. UserControl을 Window 내의 자식에 배치해야합니다. Visiblity 설정 실제로 모든 컨테이너의 자식으로 UserControl 배치하지 않습니다.

제가 생각하기에 그리드는 윈도우 내의 컨테이너입니다. 그렇다면; UserControl을 Grid에 추가하려면 Grid 내에서 자식으로 추가하기 만하면됩니다. 뒤에있는 코드 내에서 참조하기 전에 그리드의 이름을 지정해야합니다.

TimeoutPanel tp = new TimeoutPanel(this); 
myGrid.Children.Add(tp); 
0

이 컨트롤을 일부 상위 컨트롤 컬렉션에 추가해야합니다. 당신이이 스택 패널에서 제어를 만들어 보여주고 싶은, 그래서 만약

가정 당신이 당신의 메인 창에 stckPanel라는 StackPanel의이, 당신은 코드 다음을 수행 할 필요가 더에 할 일을하지 않습니다 무엇

TimeoutPanel tp = new TimeoutPanel(this); 
stckPanel.Children.Add(tp); 
+0

의견에 감사드립니다. 그러나 이렇게하면 충돌이 발생합니다. 그러나 생성자에서 매개 변수를 제거하면 작동한다는 것을 알았습니다 (실제로 매개 변수가 마음에 들지 않는 이유는 확실하지 않음). 아마도 가장 좋은 방법은 내 매개 변수를 전달하도록 설정 한 후 두 번째 메소드를 호출하는 것입니다. TimeoutPanel tp = new TimeoutPanel(); tp.passPartent (this); 왜 매개 변수로 충돌하는지 설명 할 수 있다면 좋을 것입니다! 감사! – ksamurai

+0

@Kim 예외를 게시하고 ctor 내의 해당 참조로 수행중인 작업 –

+0

@Aaron Okay가 볼 수 있도록 원래 게시물을 업데이트했습니다. 감사. – ksamurai

관련 문제