2

我想将 Viewmodel 命令绑定到用户控件的路由事件。这是我所拥有的详细说明。

我有一个用户控件,它有一个Image(显示图像)和一个Button底部(Button删除Image)。我在ListView.

在我的用户控件后面的代码中,我必须RoutedEventHandler删除Image

public event RoutedEventHandler RemoveImage;

在我使用这个用户控件的窗口中,我放了:

<uc:ucImageListItem x:Name="ImageListItem" RemoveImage="ImageListItem_RemoveImage"  />

如果我删除图像的代码在后面的代码中,则此代码可以正常工作。但我想将 Viewmodel 的命令绑定到 RemoveImage RoutedEvent。

可能喜欢(不正确)

<uc:ucImageListItem x:Name="ImageListItem" RemoveImage="{binding CommandtoRemove}"  />

如何做到这一点?

我找到了与RoutedCommandor相关的东西DependancyProperty,但找不到任何正确的方法,如何使用它们。

如果我需要进一步澄清我的问题,请告诉我。感谢期待。

4

1 回答 1

-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,第二个参数是必须返回 bool 的 func。如果 func 仅计算为 true,则触发 Action。在上面的例子中,action 和 func 中的参数是您将绑定到 CommandParameter 的内容,因为我没有绑定 CommandParameter。我希望这会有所帮助。

于 2013-02-26T06:38:21.173 回答