Приемлемым решением является привязка всех ваших комбинированных списков, флажков и текстовых входов к определенным свойствам вашей модели представления, а затем использование значений реквизитов в вашем обработчике RelayCommand вместо передачи данных в качестве CommandParameter.
Вот пример:
Ваш XAML:
<TextBox Text={Binding Arg1} />
<TextBox Text={Binding Arg2} />
<Button Command={Binding Cmd} />
Ваш ViewModel.cs:
public string Arg1 { get; set; }
public string Arg2 { get; set; }
public ICommand Cmd { get; set; }
...
Cmd = new RelayCommand(OnCmd);
...
// We will not use command parameter at all
private void OnCmd(object o)
{
// Some logic that uses a lot of arguments
Console.WriteLine(Arg1 + Arg2);
}