2011-02-10 2 views
3

잠재적으로 다른 xamls를 "주입"할 수있는 데스크톱 응용 프로그램에서 재사용 할 수있는 창을 갖고 싶습니다. 모든 창문을 똑같이 보이게하기 때문에 (예 : 멋진 제목 표시 줄과 닫기 버튼 등)WPF : 일반 윈도우를 구현하는 방법은 무엇입니까?

예를 들어, 다음과 같이 사용되는 메시지 상자 (ok/cancel/string)를 갖고 싶습니다. 그것. 나는, 양식을 호스트하는 데 사용하고 싶습니다 등

내가 현재 가지고 :
MyWindow.xaml/CS입니다 (창)
MyMessageBox.xaml/CS (인 사용자 제어)
MyForm.xaml/cs (사용자 정의 컨트롤)

그래서 이것을 구현하는 가장 좋은 방법은 무엇입니까? MyPlayer를 MyWindow에 넣은 다음 어떻게 든 다른 xamls에 "주입"합니까? 기본 창에서 무언가를 상속하려면 다른 컨트롤이 필요합니까?

나는 최선을 다해 내가하려는 일에 대해 피드백을 찾고 있습니다. 감사합니다.

답변

2

간단한 접근 방식은 프레임이있는 윈도우가되고 필요할 때 해당 프레임에 페이지를로드합니다.

+0

프레임 = ContentPresenter? – foreyez

+0

이 (Form?)을 템플릿으로 구현하려면 프레임을 ContentPresenter로 바꿀 수도 있습니다. 그러나 나는하지 않을 것이다. –

1

나는 Henk Holterman's answer에 동의합니다. 방금 WPF 응용 프로그램을위한 작은 '프레임 워크'를 작성했습니다. 코드 백을위한 공통 기능을 정의하기 위해 'content'페이지에 인터페이스를 사용합니다. 캡션 블록, 닫기 버튼 등을 제공하는 데 사용하는 일반 페이지 템플릿이 있습니다.

절대적으로 필요하지 않으면 WPF로 시각적 상속을 피할 것입니다. 제대로하려면 다소 까다로울 수 있습니다.

+0

어딘가에 게시 된 프레임 워크가 있습니까? 또는 당신이 어떻게했는지 조금 더 자세하게 설명 할 수 있습니까? – foreyez

+0

당신이 이미 필요한 것을 찾은 것처럼 보이지만, 여기 내 코드의 고기가 있습니다 : [link] (http://codepaste.net/hz4x3r) –

+0

그 코드를 게시 해 주셔서 감사합니다. 하지만 난 더 xaml 기반의 접근 방식을 찾고 있었다 즉, .. blabla .. 사용자 정의 컨트롤 안에. 나는 당신의 코드가 직접 메소드를 호출 할 필요가 있다고 생각한다. – foreyez

0

Catel의 DataWindow는 정확히 이것을합니다. 당신은 여기에 소스 코드를 찾을 수 있습니다

DataWindow.cs

+0

상업이 아니더라도 Catel의 저자 (1 명)라고 언급해야한다. –

+0

멋지긴하지만 그 데이터 윈도우의 모양을 어디에서 정의 할 수 있습니까?어떤 xaml도 볼 수 없기 때문에 모든 기능을 수행하는 것 같습니다. – foreyez

0

당신은 심각하게 Prism을 사용하는 것이 좋습니다를 이것에 대한합니다 (Patterns & Practices 그룹에서 나오는 마이크로 소프트에 의해 개발); composing UIs에 대한 도구를 제공하여 이러한 시나리오를 정확하게 처리하도록 제작되었습니다.

+0

나는 그 라이브러리의 짐승을 그렇게 단순하게 사용하지 않을 것입니다. – foreyez

+0

@foreyez : 충분히 공정하지만, 당신이 가지고있는 것을 보도록하겠습니다. UI 인스턴스를 삽입하고 작성합니다. 그것은 바로 * 프리즘이하는 것입니다. 그리고 미래에 발생할 수있는 더 복잡한 시나리오를 고려하십시오. 이미 개발 된 것을하기 위해 점점 더 많은 코드를 작성하게 될 것입니다. – casperOne

관련 문제