“delegatecommand.canexecutechanged Memory Leak” 오류가 발생하면 이 블로그 게시물이 도움이 될 것입니다.
승인됨: Fortect
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
최근에 MVVM 구조를 사용하여 WPF 및 C #으로 블로그에 게시된 데스크톱 응용 프로그램에 대한 작업을 완료했습니다. 이 모바일 앱에서는 Delegate Command 구현을 사용하여 ModelView에 제공된 ICommands 속성을 래핑했습니다. 문제는 많은 DelegateCommands가 일부 ModelViews가 뷰가 닫히는 즉시 불필요해지는 것을 방지한다는 것입니다. 따라서 전체 양식 제출을 취소할 때까지 감지되지 않은 상태로 유지됩니다. 나는 내가 회의에 참석한 응용 프로그램을 프로파일링하고 있습니다.이러한 상황을 어떻게 피할 수 있습니까? 내부적으로 mvvm 웹 디자인과 관련이 있습니까? 아니면 템플릿 삽입입니까? 감사 해요.
편집: 이것은 중요하지만 작지만 성공적인 파트너의 MVVM 구현의 완전한 부분입니다.
<사전> <코드> DelegateCommand 클래스: ICommand 완전한 개인 활동 <객체>; 개인 술어 <객체> canExcute; public DelegateCommand(액션 <객체>는 실제로 작업을 수행하고 술어 <객체> canExecute) 그렇다면 (실행 == null) 새 예외 발생 ArgumentNullException(“실행”); this.execute는 Execute와 동일합니다. this.canExcute CanExecute; = public bool CanExecute(객체 매개변수) 제공됨(this.canExcute! = null) canExcute(매개변수)가 다시 필요합니다. true를 반환합니다. 공개 이벤트 EventHandler CanExecuteChanged CommandManager.RequerySuggested를 더 추가합니다. + 값을 의미합니다. CommandManager.RequerySuggested 가져오기 – = 값; 공개 실행(매개변수 배수 매개변수) this.execute(매개변수);
클래스 ViewModel: DependencyObject, INotifyPropertyChanged 개인 대리인 명령 printCommand; 공개 ICommand PrintCommand ~ 할 것이다 그러나 if (printCommand == null) printCommand는 new DelegateCommand(Print, CanExecutePrint)와 같습니다. 반환 인쇄 명령; 인쇄 영역(객체-객체) Console.WriteLine("인쇄 주문"); bool CanExecutePrint(obj 객체) true를 반환합니다. PropertyChangedEventHandler PropertyChanged 공개 체포 이벤트 개인 무효 OnProprtyChanged(문자열 propertyName) if (PropertyChanged! iszero) PropertyChanged(이것은 새로운 PropertyChangedEventArgs(property_name));
public MainWindow() 구성 요소 초기화(); 기본 .DataContext = 새로운 ViewModel();
<사전> <코드> <윈도우 x: 클래스 = "WpfApplication1.MainWindow" xmlns는 "http://schemas.microsoft.com/winfx/2006/xaml/presentation"과 같습니다. xmlns: x는 "http://schemas.microsoft.com/winfx/2006/xaml"을 의미합니다. 제목 = "주 창" 높이 = "350" 너비 = "525"><창.입력바인딩>