Databind свойство с передачей параметра в многократно используемом Usercontrol - PullRequest
0 голосов
/ 05 мая 2018

У меня есть 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);
    }
}

1 Ответ

0 голосов
/ 06 мая 2018

Это вполне может быть закрыто как дубликат ... до тех пор, пока он не будет работать так же, как PROP1 и PROP2 и Klick - создайте свойство зависимости, и все готово.

public static readonly DependencyProperty KlickParameterProperty = DependencyProperty.Register( nameof(KlickParameter), typeof(object), typeof(userControl), new PropertyMetadata( default(object) ) );

public object KlickParameter
{
    get { return GetValue( KlickParameterProperty ); }
    set { SetValue( KlickParameterProperty, value ); }
}
...