[ mmix @ 04.10.2011. 18:49 ] @
ok, znam da view model moze biti postavljen u konstruktoru: Code (csharp): 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> ... 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. |