我想将Viewmodel命令绑定到Usercontrol的路由事件。 以下是我所拥有的详细解释。
我有一个用户控件,其中一个Image
(显示图片)和一个Button
在底部(Button
删除Image
)。我在ListView
中使用了Usercontrol。
在我的Usercontrol代码后面,我有RoutedEventHandler
删除Image
:
public event RoutedEventHandler RemoveImage;
在我使用此Usercontrol的窗口中,我放了:
<uc:ucImageListItem x:Name="ImageListItem" RemoveImage="ImageListItem_RemoveImage" />
如果我删除图片的代码在代码后面,则此代码可以正常工作。但我想将Viewmodel的命令绑定到RemoveImage RoutedEvent。
可能喜欢(不正确)
<uc:ucImageListItem x:Name="ImageListItem" RemoveImage="{binding CommandtoRemove}" />
如何实现这一目标?
我找到了与RoutedCommand
或DependancyProperty
相关的内容,但找不到任何正确的方法,如何使用它们。
如果我需要进一步澄清我的问题,请告诉我。 感谢您的期待。
答案 0 :(得分:-1)
您好这段代码显示了如何调用命令: 命令处理程序
public class CommandHandler : ICommand
{
public CommandHandler(Action<object> action,Func<object,bool> canexecute)
{
_action = action;
_canExecute = canexecute;
}
Action<object> _action;
Func<object, bool> _canExecute;
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_action(parameter);
}
}
<强>视图模型强>
public class MainViewModel
{
private CommandHandler _buttonCommand;
public CommandHandler ButtonCommand
{
get
{
return _buttonCommand ?? (_buttonCommand = new CommandHandler((param) => OnButtonCommand(param),(param)=>true));
}
}
private void OnButtonCommand(object obj)
{
//DO things here whatever you want to do on Button click
}
}
查看强>
<Button Command="{Binding ButtonCommand}" Content="ok"/>
你需要将两个参数传递给CommandHandler构造函数一个是要在Command上触发的Action,第二个param是必须返回bool的func。如果func的计算结果为true,那么命令的动作就会被触发。动作中的参数和func是你将在上面的例子中绑定到CommandParameter的东西,它将为null,因为我没有绑定CommandParameter。我希望这会有所帮助。