Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Inhalte speichern bei Seitenwechsel
Tom68
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

Inhalte speichern bei Seitenwechsel

beantworten | zitieren | melden

Hallo,

ich nutze wpf und MVVM und möchte die Inhalte aus Textboxen usw. bei einem Viewwechsel speichern, so das diese wieder beim zurück wechsel zum ersten View wieder eingetragen werden.

Oder gibt es dafür eine andere Möglichkeit. Bei jedem Wechsel sind die Inhalte ja weg bzw leer.

VG
Tom
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tom68 am .
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5983
Herkunft: Leipzig

beantworten | zitieren | melden

Hi Tom68,

die Werte stehen doch im ViewModel und werden beim Wechsel der View nicht verändert.

Wenn die zweite View auf das gleiche VM zugreift, und die Daten ändert, dann mußt du die Werte tatsächlich zwischenspeichern.

Mehr kann man dazu nicht sagen, ohne den Code zu kennen...
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Tom68
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Hallo,

ich habe mir eine Klasse NavigationViewModel angelegt mit folgendem Inhalt:

  class NavigationViewModel : INotifyPropertyChanged

    {

        public ICommand OneCommand { get; set; }

        public ICommand MultiCommand { get; set; }

        private object selectedViewModel;

        public object SelectedViewModel
        {
            get { return selectedViewModel; }
            set {
                selectedViewModel = value;
                OnPropertyChanged("SelectedViewModel");
            }

        }



        public NavigationViewModel()
        {
            OneCommand = new BaseCommand(OpenEmp);
            MultiCommand = new BaseCommand(OpenDept);
        }

        private void OpenEmp(object obj)
        {
                SelectedViewModel = new OneViewModel();
        }

        private void OpenDept(object obj)

        {
                SelectedViewModel = new MultiViewModel();
         }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }

    }

Im Xaml:

 <DataTemplate DataType="{x:Type vm:OneViewModel}">
            <vs:OneView/>
        </DataTemplate>

        <DataTemplate DataType="{x:Type vm:MultiViewModel}">
            <vs:MultiView/>
        </DataTemplate>

Im Mainwindow:


  InitializeComponent();
  this.DataContext = new NavigationViewModel();

Xaml der Buttons:

<StackPanel x:Name="navigation" DockPanel.Dock="Left" Width="180"  Background="#FF5D8BC6">
                <Button   Content="Einzelnes " Command="{Binding OneCommand}"></Button>
                <Button  Content="Automatisch" Command="{Binding MultiCommand}"></Button>
            </StackPanel>
und:

 <ContentControl x:Name="Pages" DockPanel.Dock="Right" Content="{Binding SelectedViewModel}" Width="826"/>

Das Umschalten funktioniert. Ich habe auf dem ersten View zwei Eingabefelder. Wenn ich dort etwas reinschreibe und dann den View wechsele auf den zweiten und wieder zum ersten View gehe, sind die Eingaben weg. Was ja auch logisch ist, denn es wird ja eine neue instanz des Views erzeugt.

Wie kann ich die Daten der Eingabefelder aber zwischenspeichern so das ich diese wieder herstellen kann. Das gilt auch für den zweiten View.

Hier habe ich einen ToggleButton dessen Status beim umschalten auch verloren geht.

VG
Tom
private Nachricht | Beiträge des Benutzers
t0ms3n
myCSharp.de - Member



Dabei seit:
Beiträge: 319

beantworten | zitieren | melden

Du erstellst nicht nur eine neue Instanz des Views sondern auch des ViewModels. Erstelle das ViewModel nur, wenn es noch nicht erstellt wurde.
private Nachricht | Beiträge des Benutzers
Tom68
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Hallo,

Danke dir. Hatte ich auch schon dran gedacht und versucht umzusetzen. Aber anscheindend damals falsch. Nun funktioniert es. Die Inhalte bleiben erhalten.

VG
Tom
private Nachricht | Beiträge des Benutzers