DIならAddTransientだと別々のインスタンスになるからAddSingletonしとけ

public class Model
{
public Collection{get;}=new ObservableCollection<string>();
}
public class ViewModel
{
public ViewModel(Model model)
{
Model=model;
}
public Model Model{get;}
}
public MainPage(ViewModel viewModel)
{
ViewModel=viewModel;
}
public Model ViewModel{get;}
}

こんな風に作ったら

builder.Services.AddSingleton<Model>().AddSingleton<ViewModel>().AddSingleton<MainPage>();

こうすればそれぞれのコンストラクタにインスタンスが自動的に注入される
コンストラクタの引数をインターフェースにしとけばテストの時にモックが注入できる