Судя по комментариям и вашей путанице, MVVM подходит вам. Задача состоит в том, чтобы научиться MVVM.
Итак, откройте хорошую ссылку и приступайте. MVVM на удивление легко сделать, и довольно легко обернуть все это с помощью Ninject и надеть на него лук.
Начальная кривая обучения, если вы НЕ используете стороннюю библиотеку для Ninject + MVVM, как я, немного крута. Вот пара вещей, которые я должен был понять:
DataContext="{Binding Path=ResultViewModel,Source={StaticResource ServiceLocator}}"
Это небольшое добавление позволяет вам запускать целое число, чтобы получить информацию о модели представления из вашего XAML:
<Application.Resources>
<ioc:NinjectServiceLocator x:Key="ServiceLocator" />
</Application.Resources>
этот маленький трюк позволяет назначить этот статический ресурс из файла app.xaml соответствующему классу
public class NinjectServiceLocator
{
private readonly IKernel kernel;
public NinjectServiceLocator()
{
kernel = new StandardKernel(new MyMvvmModule());
}
public ResultViewModel ResultViewModel
{
get { return kernel.Get<ResultViewModel>(); }
}
}
Это примечательно. Каждая модель представления должна быть указана как свойство в ServiceLocator, чтобы Ninject мог сгенерировать их. Наконец, MyMvvmModule в приведенном выше примере является стандартным классом Ninject, в котором вы прикрепляете переопределение для Load () и связываете все свои интерфейсы.