2011-03-28 3 views
1

2 개의 사용자 정의 컨트롤이 있습니다. 내 MainPage 컨트롤과 편집 기능이 제어됩니다. 내 편집 컨트롤은 WCF를 사용하여 데이터베이스를 업데이트합니다. 이 작업이 끝나면 데이터베이스를 검색 한 Mainpage 컨트롤을 다시로드하여 편집 기능 컨트롤에 의해 변경된 내용을 확인해야합니다.Silverlight UserControl

이 작업은 asp.net 프로젝트에서 MainPage로 리디렉션하여 수행했습니다. Silverlight에서 어떻게 수행되는지 알고 계십니까?

+0

두 개의 뷰 모델을 사용하여 주 모델을 매개 변수로 편집 모델의 생성자에 전달할 수 있습니다. 또한 mvvm 라이트 라이브러리의 메신저 클래스에 대해 일종의 이벤트 애그리 게이터를 사용할 수 있습니다. – vorrtex

답변

0

좋아, 그래서 메인 페이지 상단에 버튼을 만들어서 페이지를 새로 고침했다. 그런 다음 시각적 트리 도우미를 사용하여 단추를 가져 와서 호출했습니다. 공공 정적 클래스 ControlFinder { 공공 정적 T FindParent (UIElement에 제어) T : UIElement에 { UIElement에 P = VisualTreeHelper.GetParent (제어

  1. 컨트롤을 검색 할 수있는 클래스를 만든다 :이에 의해 한) as UIElement; if (p! = null) { if (p is T) return p as T; else return ControlFinder.FindParent (p); } return null; }

    }

  2. 컨트롤 내의 버튼 찾기 :

    UserControl을 UC = ControlFinder.FindParent (이); UserControl mainControls = ControlFinder.FindParent (uc); var PageGrid = VisualTreeHelper.GetChild (mainControls, 0); var StackPanel = VisualTreeHelper.GetChild (PageGrid, 0); 단추 RefreshButton = (Button) VisualTreeHelper.GetChild (StackPanel, 0);

  3. 새로 고침을 발생시키는 버튼 이벤트 호출 ButtonAutomationPeer buttonAutoPeer = new ButtonAutomationPeer (RefreshButton); IInvokeProvider invokeProvider = buttonAutoPeer.GetPattern (PatternInterface.Invoke)을 IInvokeProvider로 사용합니다. invokeProvider.Invoke();

관련 문제