2012-06-28 3 views
0

그래서 2 부분으로 나눠진 응용 프로그램이 있습니다. 왼쪽에는 사용자 정의 메뉴가 있으며, 오른쪽에는 모든 "내용"(다른 화면)이 들어있는 표가 있습니다.WPF 사용자 정의 컨트롤을 사용해야합니까? 아니면 단지 격자?

그것은이 같은 같습니다

또한

enter image description here

는, 다른 버튼이 공격 할 때, 왼쪽에있는 메뉴 (예를 들어 다른 버튼을 채우는 것, 당신은 검토 버튼을 누르면 경우,

Start Date 
End Date 

Employee 
Project 
... 

내가 화면에 설정할 것을 확신 (오른쪽 갈) 자신의 사용자 컨트롤 할 수 : 메뉴의 라인을 따라 뭔가) 될 것입니다.

하지만 내 질문은 이것입니다 : 각 메뉴는 사용자 컨트롤이어야합니까? 이렇게하면 사용하기가 조금 더 어려워집니다. 그런 다음 getter/setter를 사용하여 메인 윈도우가 메뉴 버튼 등을들을 수 있도록해야합니다.

다른 옵션은 프로그래밍 방식으로 mainWindow에 버튼을 추가하는 것입니다. mainWindow.cs에서 (그리드에)

어떤 것이 더 좋은 방법입니까? 또는 선호되는 다른 방법이 있습니까?

+0

WPF는 Grid 및 Canvas의 주 사용을 위해 설계되었습니다. –

답변

1

전체 창은 Grid으로 쉽게 처리 할 수 ​​있습니다.

왼쪽에는 버튼으로 StackPanel 또는 다른 레이아웃 컨트롤 만있을 수 있습니다.

ContentPresenter을 사용하면 오른쪽에 내용을 저장할 수 있습니다. 버튼을 트리거 할 때 바인딩 된 콘텐츠 만 변경하면 해당 사용자 컨트롤로 업데이트됩니다.

+0

재미있을 것 같습니다. 그래서 각 화면마다 별도의 파일을 만들어서는 안된다는 말입니까? 하지만 그게 내 MainWindow.cs/xaml 파일이 huuuuge 될 것이라는 의미는 아니겠습니까? – Toadums

+0

@Toadums 아니요 - "화면"마다 별도의 UserControl을 가질 수 있습니다. ContentPresenter는 런타임에 내용을 바꿀 수 있습니다. –

+0

오, 오케이. 나는 그것을 얻는다!! 따라서 C# 코드에서 단추를 정의하고 스택 패널에서 추가/제거하는 것은 괜찮습니까? – Toadums

0

리드 (Reed)가 말한 것처럼 그리드로 처리 할 수 ​​있다고 생각합니다. 그러나 당신이 다른 곳에서 이것을 재사용해야한다면, 나는 분리 된 UserControl을 사용해야한다고 생각한다.

0

어쩌면 내가 너를 오해하고있다. TabControlTabStripPlacement="Left"을 사용할 것이다.

다른 항목을 표시하기 위해 왼쪽에 추가 공간이 필요한 경우 기본 TabControl의 ControlTemplate을 덮어 쓰고 ControlTemplate 안에 TabPanel에 여백 공간을 추가 할 수 있습니다. 또는 선택하지 않은 경우 TabItem의 헤더 표시를 선택할 때와 그렇지 않은 경우를 다르게 표시 할 수 있습니다.

관련 문제