在可重用的Usercontrol中使用传递参数对数据进行数据绑定

时间:2018-05-05 20:53:40

标签: c# wpf mvvm data-binding prism

我有一个包含Button和文本框的userControl,我在一个页面中使用了3次usercontrol具有Codebehind但其余项目是Mvvm模式。

在我的usercntrol中,数据绑定按钮点击属性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 ); }
}

在Usercontrol xaml上:

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

现在在我的PageView中我使用了3个控件:

<local:userControl Klick="{Binding NavigateToMain}"/>
<local:userControl Klick="{Binding NavigateToMain}"/>
<local:userControl Klick="{Binding NavigateToMain}"/>

我想要做的是能够使用Binding传递一个字符串,这样我就可以知道点击了什么按钮(用户控件是什么)

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 :(得分:1)

这可能会被重复关闭......在此之前,它的工作方式与PROP1PROP2以及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 ); }
}