Jeśli pojawi się błąd „delegatecommand.canexecuted Memory Leak”, ten wpis na blogu powinien pomóc.
Zatwierdzono: Fortect
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Niedawno ukończyłem prace nad aplikacjami desktopowymi wskazanymi w WPF i C# wykorzystując nawyki MVVM. W tej aplikacji mobilnej użyłem implementacji Delegate Command, aby zawinąć właściwości ICommands dostarczone w moim ModelView. Problem polega na tym, że tego rodzaju DelegateCommands zapobiegają niepotrzebnym widokom ModelView natychmiast po zamknięciu widoku. Pozostaje więc niewykrywalny, dopóki nie anuluję całego przesłania formularza. Profiluję aplikację, z którą się spotykam.Jak mogę uniknąć tego rodzaju sytuacji i czy jest to wewnętrznie związane z koncepcją mvvm, czy jest to implantacja szablonu?. Dziękuję.
Edytuj: jest to ogromna, mała, ale udana, ale kompletna część implementacji MVVM mojego ulubionego partnera
Klasa DelegateCommand: ICommand przeprowadzone działanie publicpersonal ; prywatny predykat canExcute; public DelegateCommand (Akcja
group class ViewModel: DependencyObject, INotifyPropertyChanged Private DelegateCommand printCommand; Publiczne polecenie drukowania ICommand Wola tak jak powinno (printCommand == null) printCommand równa się nowemu DelegateCommand (Print, CanExecutePrint); return printCommand; Obszar wydruku (obiekt-obiekt) Console.WriteLine („Zamówienie drukowania”); bool CanExecutePrint (obiekt obj) zwraca prawdę; PropertyChangedEventHandler PropertyChanged szeroko dostępne wydarzenie private void OnProeprtyChanged (string propertyName) if (Zmieniona właściwość! iszero) PropertyChanged (to nowy PropertyChangedEventArgs (property_name));
public MainWindow () Zainicjuj komponent (); Base .DataContext = najnowszy ViewModel ();
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.