Code (csharp):
public partial class LossCurvesView : UserControl
{
public LossCurvesView(LossCurvesViewModel viewModel)
{
InitializeComponent();
this.Loaded += (a, e) => { this.DataContext = viewModel; };
}
}
public partial class LossCurvesView : UserControl
{
public LossCurvesView(LossCurvesViewModel viewModel)
{
InitializeComponent();
this.Loaded += (a, e) => { this.DataContext = viewModel; };
}
}
ali ne svidja mi se preterano ovaj pristup, em sto gubim design time binding nego jos i koristim code-behind nakon sve price o separacija murkupa od koda. Hteo bih da viewmodel injectujem nekako drugacije, kao npr kroz xaml :
Code (xml):
<UserControl ... xmlns:vmodel="clr-namespace:Risk.ViewModels.Curves"
<UserControl.DataContext>
<vmodel:LossCurvesViewModel />
</UserControl.DataContext>
...
<UserControl.DataContext>
<vmodel:LossCurvesViewModel />
</UserControl.DataContext>
...
problem je sto ovo zahteva da viewmodel ima parameterless konstruktor sto je problem kada (a to je skoro uvek) view model ima dependencies. Tehnicki mogao bih dependencies da prebacim da budu attributed [Dependency] propertiji (iako iz nekog razloga komuna anatemise taj non-constructor pristup), medjutim problem je sto instancijaciju ViewModela vise ne radi Unity container vec radi xaml engine koji ne radi dependency injection.
Dakle, postoji li view-first metod za instancijaciju viewmodela bez uplitanja code-behinda? Blend i VS designer nekako mogu i da prevarim sa d:DesignSource/d:DataContext ali bih stavrno hteo da eliminisem code-behind bez da izgubim view-first.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić