我有一个UserControl
包含多个按钮的按钮,并且对于每个按钮我都有一个Command
DependencyProperty
定义。UserControl XAML 是(为简洁起见删除了一些元素):
<UserControl>
<Grid>
<Button Command="{Binding CloseCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" ToolTip="Delete">
<Button Command="{Binding NavigateCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" ToolTip="Launch">
</Grid>
</UserControl>
UserControl 代码隐藏中的 DepencyProperties 是:
public static readonly DependencyProperty CloseCommandProperty = DependencyProperty.Register("CloseCommand", typeof (ICommand), typeof (Tile));
public ICommand CloseCommand
{
get { return (ICommand)GetValue(CloseCommandProperty); }
set { SetValue(CloseCommandProperty, value); }
}
public static readonly DependencyProperty NavigateCommandProperty = DependencyProperty.Register("NavigateCommand", typeof (ICommand), typeof (Tile));
public ICommand NavigateCommand
{
get { return (ICommand) GetValue(NavigateCommandProperty); }
set { SetValue(NavigateCommandProperty, value); }
}
我正在使用 MVVM Light,并且可以通过RelayCommands
我的 ViewModel 为包含多个 this 实例的 View绑定到这些命令UserControl
。我希望能够为CommandParameters
我的 UserControl 上的每个命令公开个人。这可能吗?
将来,我还希望整个UserControl
(基本上是直接包含在其中的网格)公开其他事件的命令(单击、拖放和数据删除),同样,每个事件都会公开自己的CommandParameters
.
我没有找到太多关于多重Command
和CommandParameter
配对的信息,所以我想知道我是否采取了错误的方法。会CustomControl
更合适吗?或者最好使用 a 来解决这个问题DataTemplate
?将诸如单击和拖动之类的事件作为命令公开似乎也没有太多的覆盖范围 - 是否有更好的容器控件可以满足我的需求?