| 

.NET C# Java Javascript Exception

3
Hallo,
ich habe einen usercontrol, der in seinem Ctor ein viewModel instanziert und als Datacontext zugewiesen wird.
Dieser ViewModel wird auch in der App.xaml.cs gesetzt :
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

// Initialize main window and view model
var mainWindow = new Demo();
Projekt[] projekte = Datenquelle.GetProjekte();
var viewModel = new SystemViewModel(projekte);
mainWindow.DataContext = viewModel;
mainWindow.Show();
}
}

nun habe ich das Problem das SystemViewModel 2 mal instanziert wird.
Mein Ziel ist es eine einzige Instanz des Systemvielmodel, einmal der Hauptapplikation und dem Usercontrol zuzuweisen.
Danke schon mal
14.02.2011
Amin 61 2
2 Antworten
2
1. ViewModel niemals im Konstruktor instanziieren
2. ViewModel von aussen dem DataContext zuweisen

Die einfachste Variante ist sicherlich, das ViewModel in der App.xaml zu instanziieren, der View als DataContext zuzuweisen und das, was für dein UserControl notwendig ist, per Binding weiter zu geben.

Einen anderen Ansatz habe ich hier vor einiger Zeit beschrieben:
Binden von ViewModels via Locator
Binden von ViewModels via Locator - Teil 2

(Anwendungsbeispiele sind in den Beiträgen enthalten).
14.02.2011
Norbert Eder 373 4
Vielen Dank,
ich habe das jetzt mit einem singlton gelöst. in der App.xaml wird eine Instanz des ViewModels erstellt.statt den Constructor habe ich das Loaded event vom User control benutzt um auf die Instanz des ViewModel zu zugreiffen.
Amin 14.02.2011
0
Du schreibst das du dem UserControl und der Hauptanwendung jeweils im Konstruktor das SystemViewModel instanzierst. Wäre es nicht besser, du lässt es nur in der App.xaml.cs erledigen und übergibst den selben DataContext beim erstellen des UserControls bzw. wenn du das UserControl irgendwo hinzufügst?
14.02.2011
Konstantin 3,7k 7

Stelle deine .net-Frage jetzt!