Я искал способ создать навигацию, где я использую привязку команды с указанным в представлении параметром команды, чтобы выполнить «общую» команду навигации в моей ViewModel.
Этооригинальная реализация Navigation в пользовательской службе навигации, найденная в примере корпоративного приложения .
public Task NavigateToAsync<TViewModel>() where TViewModel : ViewModelBase
{
return InternalNavigateToAsync(typeof(TViewModel), null);
}
Вы управляете этим, вызывая:
NavigateToAsync<SomeViewModel>();
Лучшее, что у меня естья смог заменить вышеприведенную реализацию следующим:
public Task NavigateToAsync(Type viewModel)
{
return InternalNavigateToAsync(viewModel, null);
}
Где тип ViewModel передается в качестве параметра команды из командного представления.
Что я ищуэто выяснить, возможно ли объединить эти два, вместо того, чтобы полагаться на отдельные реализации.
Я хотел бы сохранить это,
NavigateToAsync<TViewModel>();
, но кое-как, как можноВызовите и выведите из параметра команды представления.
Это звучит разумно вообще?
Извините, что не могу выразить мою проблему более последовательно, поскольку я quЭто на грани моих нынешних возможностей.
Я знаю, что мог бы, возможно, сжать свой вопрос в несколько предложений, если бы точно знал, что именно я хочу описать.
Я был бы признателен за любые указания на возможные источники по этому вопросу, так как мой прогресс устарел.
Приветствия.
РЕДАКТИРОВАТЬ: Спасибо G.hakim за вопрос.
Используя их:
<Button
Command="{Binding NavigationCommand}"
CommandParameter="{x:Type vm:SomeViewModel}" />
public ICommand NavigationCommand
=> new Command<Type>(async (Type viewModelType)
=> await Navigate(viewModelType));
Я могу использовать одну команду для навигации по многим различным представлениям, и, таким образом, я могу избежать необходимости писатьнесколько навигационных команд.