У меня та же самая сделка. Вот мое решение (может быть, не самая лучшая практика, но оно работает для меня).
Я создал несколько классов «Группировка»:
public class Duo<TFirst,TSecond> { /*...*/ }
public class Trio<TFirst,TSecond, TThird> { /*...*/ }
и фабричный объект для их создания (чтобы воспользоваться выводом типа ... некоторые из TFirsts и TSeconds и TThirds могут быть LONG)
public static class Group{
public static Duo<TFirst, TSecond> Duo(TFirst first, TSecond second) {
return new Duo<TFirst, TSecond>(first, second);
}
/*...*/
}
Это дает мне безопасность типов и интеллигентность с минимумом суеты. Это просто пахнет, потому что вы группируете классы, которые по сути не имеют реального отношения между ними в один объект. Я полагаю, что было бы лучше расширить класс ViewPage для добавления второго и третьего ViewModel, но способ, которым я это сделал, требует гораздо меньше работы.