Ich möchte wissen, dass es eine Möglichkeit gibt, meine aktuelle Ansicht nach dem Laden im Prismenbereich zu aktualisieren. Meine Ansicht wird beim Laden automatisch aktualisiert und ich benutze lebenslange Schnittstelle, um jedes Mal beim Aufruf geladen zu werden. gibt es einen Weg, wo wir die aktuelle Ansicht wie Update-Ordner aktualisieren können ??Wie aktualisiere ich cuurent view in prism region?
Antwort
Zunächst sollte sich das Ansichtsmodell (und damit die Ansicht) automatisch aktualisieren, wenn sich das Modell ändert, entweder durch INotifyPropertyChanged
, dedizierte Ereignisse, Verwendung des EventAggregator
oder eines anderen Nachrichtenübergabesystems. Wenn Sie möchten, dass das Ansichtsmodell nur zu einem bestimmten Zeitpunkt aktualisiert wird (z. B. wenn der Benutzer auf eine Aktualisierungsschaltfläche klickt), sollten Sie den Aktualisierungscode aus der NavigatedTo
-Methode entfernen und diese Methode aufrufen NavigatedTo
und UpdateCommand
.
internal class MyViewModel : BindableBase, INavigationAware
{
public MyViewModel(IDataSource theSourceOfData)
{
_theSourceOfData = theSourceOfData;
UpdateCommand = new DelegateCommand(UpdateData);
}
public string MyProperty
{
get
{
return _myProperty;
}
set
{
SetProperty(ref _myProperty, value);
}
}
public DelegateCommand UpdateCommand { get; }
#region INavigationAware
public void OnNavigatedTo(NavigationContext navigationContext)
{
UpdateData();
}
#endregion
#region private
private readonly IDataSource _theSourceOfData;
private string _myProperty;
private void UpdateData()
{
_myProperty = _theSourceOfData.FetchTheData();
}
#endregion
}
Nun, wenn wir die Update-Schaltfläche klicken, wird MyViewModel.MyProperty
aktualisiert und die Meldung Änderung gedrängt, um die Aussicht. Das Gleiche passiert, wenn wir zum Ansichtsmodell navigieren.
Da ich dies bereits mithilfe von Delegatbefehlen implementiert habe, habe ich Eigenschaften aktualisiert, indem ich eine Methode aufgerufen habe, die im Delegate-Befehl registriert ist. Ich war neugierig auf einen einfacheren Weg, anstatt eine Methode aufzurufen, um alle Eigenschaften zurück zu aktualisieren. Verwenden Sie DataSource, um uns auf andere Weise zu holen? –
Sie können das Hintergrundfeld löschen und direkt auf die Datenquelle im Getter von 'MyProperty' zugreifen, wodurch die Verantwortung für das korrekte Zwischenspeichern von Daten aus dem Ansichtsmodell entfällt. Das Ansichtsmodell sollte das 'PropertyChanged'-Ereignis der Datenquelle beobachten, um seine eigenen auszulösen, wenn sich eine Datenquelle ändert, so dass sich' MyProperty' ändert. Dies kann leicht und refactoring-sicher durchgeführt werden, indem der Property-Beobachter verwendet wird: https://joshsmithsonwpf.wordpress.com/2009/07/11/one-way-to-avoid-messy-propertychanged-event-handling/ – Haukinger
- 1. AvalonDock mit Prism Region Adapter
- 2. TabControl-Region, Wie Parameter an untergeordnete Region übergeben? WPF - Prism
- 3. PRISM RegionManager Region in mehreren Regionen
- 4. PRISM fehlende Region für DevExpress NavBarGroup
- 5. Aktualisiere einen View-Controller
- 6. Aktualisiere Report Viewer Währung basierend auf Region
- 7. WPF, Prism v2, Region in einem modalen Dialog, fügen Sie eine Region in Code hinter
- 8. Anzeigen von Modulen in einer Prism-Region, wenn verfügbar
- 9. Aktualisiere die Region hinter einem skalierten Fenster
- 10. So definieren Sie eine Region innerhalb einer Eigenschaft in prism
- 11. Wie aktualisiere ich View nach der Eingabe von applicationWillEnterForeground?
- 12. Wie aktualisiere/aktualisiere ich app.config?
- 13. Wie aktualisiere/aktualisiere ich qTreewidget?
- 14. Wie aktualisiere ich Webview?
- 15. WPF + PRISM So ändern Sie die Region zur Laufzeit
- 16. Prism: Daten zwischen ViewModels teilen, die in eine Region geladen sind?
- 17. Wie aktualisiere ich eine Recyclerview in Android?
- 18. Wie aktualisiere ich Ereignisdaten in Jquery Vollkalender
- 19. Wie aktualisiere ich Datenrahmen
- 20. Wie in WPF Prism Rahmen
- 21. Wie aktualisiere ich datagridview
- 22. Wie aktualisiere ich axshockwaveflashObjects
- 23. Wie aktualisiere ich bxslider?
- 24. Wie aktualisiere ich Instanzen, indem ich statische Variablen aktualisiere?
- 25. Mahapps & Prism HamburgerMenü
- 26. Prism Navigation: Wo kann man View/ViewModels mit UnityContainer registrieren?
- 27. Wie aktualisiere ich eine Abfragezeichenfolgeflag in asp.net MVC
- 28. PRISM RequestNavigate nicht
- 29. Wie aktualisiere ich meine RadTreeView
- 30. Wie aktualisiere ich die Benutzeroberfläche?
nicht sicher, was Sie mit "Update-Ordner" meinen, aber Sie können 'INavigationAware' verwenden, um benachrichtigt zu werden, wenn zu und von – Haukinger
Navigieren Ich möchte Modul nach einem Ereignis, das in demselben Modul –
empfangen wird, ein Modul kann nicht erneut geladen werden, es ist einmal geladen und dann ist es da. Willst du das _view_ neu laden? – Haukinger