2009-04-18 15 views
1

목록 상자와 프레임이 포함 된 WPF 페이지가 있습니다. 프레임에는 목록 상자 내의 선택에 의해 결정되는 다양한 페이지가로드됩니다.상위 페이지 컨트롤에 액세스하는 WPF 프레임

프레임 내의 각 페이지에는 다양한 입력 상자가 있으며 저장 취소 버튼이 있습니다. 저장 버튼을 클릭하면 내용을 데이터베이스에 저장하고 상위 페이지의 목록 상자를 새로 고쳐 새로운 데이터를 반영해야합니다.

데이터 저장은 쉽지만 부모 페이지의 목록 상자의 내용을 프레임 안의 페이지에서 불러올 때 어떻게 새로 고침을 시작합니까?

어떻게 든 부모 페이지 컨트롤에 액세스 할 수 있어야합니다.

아이디어가 있으십니까?

답변

3

부모 컨트롤의 구조를 변경하면 부모 컨트롤의 구조를 변경하면 부모 컨트롤의 구조가 변경 될 수 있으므로 유지 관리가 어려운 코드는 부모 컨트롤에 접근하여 컨트롤에 포함시키는 것이 기술적으로 가능합니다. 모든 포함 된 페이지. 이는 매우 밀접하게 결합 된 디자인으로 간주되며 종종 깨지기 쉬운 것입니다.

저장 버튼을 누르면 페이지 클래스에서 이벤트가 발생합니다. 그런 다음 상위 프레임이 이벤트를 싱크하고 저장 작업 후에 새로 고쳐야하는 내용을 새로 고칠 수 있습니다. 구성 요소가 느슨하게 결합 되었기 때문에 관리하기가 더 쉽지만 GUI 구성 요소에 많은 데이터베이스 지식이 남아 있습니다. 이러한 디자인은 많은 유지 관리 또는 향후 개선을 기대하지 않는 비교적 간단한 앱에 적합 할 수 있습니다.

많은 개발자와 마찬가지로 선호하는 디자인 패턴은 쉽게 테스트 할 수있는 간단한 프로그래밍 인터페이스로 하나 이상의 클래스 내부에서 데이터베이스 처리 및 비즈니스 논리를 격리하는 것입니다. GUI 구성 요소는 가능한 한 간단하고 얇게 유지되므로 필요할 경우 쉽게 변경할 수 있습니다. 이것은 종종 Model-View-Controller 패턴이라고 불리지 만 다른 이름이 있습니다. 귀하의 비즈니스 로직을 캡슐화하는 "컨트롤러"클래스에는 정보 읽기 및 설정을위한 속성 및 메서드와 데이터베이스에 변경 내용을 쓰는 "저장"또는 "커밋"메서드가 있습니다. 저장이 완료되면 정보가 변경된 정보를 표시하는 모든 컨트롤 ("보기")에 알리고 컨트롤러 클래스의 새 속성 값을 기반으로 새로 고침하는 "저장된"또는 "변경된"이벤트가 발생합니다 .

+0

감사합니다. Jay, 흥미로운 접근 방법입니다. 데이터 액세스 레이어가있는 비즈니스 개체를 사용하고 있으므로 여기에서 새로 고침을 시작할 수 있습니다. 나는 WPF가 부모 컨트롤에 접근하는 쉬운 방법을 제공하지만 어쩌면 나는 너무 낙관적 일 것이라고 기대했었다. – Mitch