"(프리즘) 영역"MainViewRegion "이있는 MainWindow를 사용하여 WPF에서 작업하고 있습니다. 이것은 사용자의 원하는보기를 기반으로 전환되며, 그렇게 할 때 MainWindow는 삽입 된보기의 새 치수에 맞추기 위해 크기가 조정됩니다.프리즘 영역 전환 및 컨테이너 인스턴스와의 동기화
지역 전환 후 바탕 화면에 창을 완전히 표시하는 코드가 있습니다. 코드는 다음과 같습니다.
private void WindowModeChange(string uri)
{
IRegion mviewRegion = regionManager.Regions[RegionNames.MainViewRegion];
if (mviewRegion == null) return;
regionManager.RequestNavigate(mviewRegion.Name, new Uri(uri, UriKind.Relative));
//Get the MainWindow instance from the container
var uc = container.Resolve<MainWindow>(InstanceNames.MainWindowView);
//Make sure the entire window is visible onscreen
ShiftWindowOntoScreenHelper.ShiftWindowOntoScreen(uc);
}
"uc"변수는 영역 변경 전에 항상 MainWindow 매개 변수와 동일합니다. "uc"는 항상 내가 원하는 것보다 한 발 앞선다. 그래서 "snap-to"코드는 항상 꺼져있다.
무엇이 누락 되었습니까?
그렇게하지 마십시오. 그러지 마. regionmanager에서 응답 할 수있는 이벤트가 많이 있으며 탐색 콜백에서 이벤트를 수행 할 수 있습니다. 그러나 VM에서 View에 액세스하지 마십시오. 이 논리 유형은 VIew의 코드 숨김에 속합니다. –
오 와우! 브라이언 라구나 스! 개인적인 팁을 감사하십시오. 이 메서드는 뷰 모델이 아닌 "컨트롤러"로 추가해야합니다. – Moe45673
@BrianLagunas : 응답 한 알림을 시작하기 만하면 – Moe45673