У меня есть userControl, который содержит Button и текстовое поле, и я использую 3 раза на странице, usercontrol имеет Codebehind, но остальной проект находится в шаблоне Mvvm.
В моем пользовательском контроле я делаю привязку кнопки к свойству Klick
public static readonly DependencyProperty KlickProperty = DependencyProperty.Register( nameof(Klick), typeof(ICommand), typeof(userControl), new PropertyMetadata( default(ICommand) ) );
public ICommand Klick
{
get { return (ICommand)GetValue( KlickProperty ); }
set { SetValue( KlickProperty, value ); }
}
В пользовательском контроле xaml:
<Button Content="Button" Command="{Binding Klick}"/>
Теперь в моем PageView я использую 3 элемента управления:
<local:userControl Klick="{Binding NavigateToMain}"/>
<local:userControl Klick="{Binding NavigateToMain}"/>
<local:userControl Klick="{Binding NavigateToMain}"/>
Я хочу передать строку с привязкой, чтобы я мог знать, какая кнопка была нажата (какой пользовательский элемент управления), например
Command = "{Binding NavigateToMain}" CommandParameter = "Button_from_usercontrol _1"
Вот остаток кода
class PageViewModel : BindableBase
{
public ICommand NavigateToMain{ get; private set; }
private readonly IRegionManager _regionManager;
public PageViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
NavigateToMain = new DelegateCommand(() => NavigateTo());
}
private void NavigateTo()
{
_regionManager.RequestNavigate(Contentregionn, Main);
}
}