Привязка данных нажатием кнопки в многократно используемом пользовательском контроле - PullRequest
0 голосов
/ 05 мая 2018

Я использую Mvvm / Prism для разработки интерфейса, я создал пользовательский элемент управления с кодом, который имеет текстовое поле label (ничего mvvm)

весь проект находится на шаблоне mvvm, и у меня есть страница Home, содержащая 3 пользовательских элемента управления.

В моем userControl я связываю содержимое метки со свойством (строка) PROP1, текстовое поле (строка) PROP2 со свойством (код позади), а в моем HOME я просто привязываю эти свойства к свойствам в моем HomeViewModel

 <local:userControl  PROP1="{Binding Text}" PROP2="{Binding Name}" />

Теперь я хочу привязать данные к нажатию кнопки тем же способом, что и хочу на моей странице userControl:

<Button Content="Button" Command="{Binding Klick}"/>

Но я не знаю, как сохранить его в свойстве, чтобы я мог использовать его позже

Вот как я хочу, чтобы финальный Дом был похож на

<local:userControl  Klick="{Binding Commandp}" PROP1="{Binding Textp}" PROP2="{Binding Namep}" />

и HomeViewModel

class HomeViewModel : BindableBase
{
    public ICommand Commandp{ get; private set; }


    private readonly IRegionManager _regionManager;

    public HomeViewModel (IRegionManager regionManager)
    {
        Commandp= new DelegateCommand(() => NavigateTo("Docs"));
    }

    private void NavigateTo(string url)
    {
        _regionManager.RequestNavigate(Regions.Contentregoin, url);
    }
}

PS: я использую ViewModelLocator.AutoWireViewModel

1 Ответ

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

Это работает так же, как PROP1 и PROP2 - создайте свойство зависимости, и все готово.

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 ); }
}
...