我有一个包含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);
}
}
答案 0 :(得分:1)
这可能会被重复关闭......在此之前,它的工作方式与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 ); }
}