Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中路由命令的实现_C#_Wpf_Prism_Commandbinding - Fatal编程技术网

C# WPF中路由命令的实现

C# WPF中路由命令的实现,c#,wpf,prism,commandbinding,C#,Wpf,Prism,Commandbinding,我有简单的ICommand绑定,但是我在ItemsControl中有按钮,希望获得发送者信息,就像普通的路由事件(objectsender,e RoutedEventArgs)一样,这在普通ICommand中似乎是不可能的,对吗 我在这里有点迷路了 我目前使用Prism 6 DelegateCommand类使事情正常工作。看起来是这样的: private ICommand _selectCommand; public ICommand SelectCommand { get {

我有简单的ICommand绑定,但是我在ItemsControl中有按钮,希望获得发送者信息,就像普通的
路由事件(objectsender,e RoutedEventArgs)
一样,这在普通ICommand中似乎是不可能的,对吗

我在这里有点迷路了

我目前使用Prism 6 DelegateCommand类使事情正常工作。看起来是这样的:

private ICommand _selectCommand;
public ICommand SelectCommand
{
    get
    {
        return _selectCommand ?? (_selectCommand = new DelegateCommand<object>(SelectImage));
    }
}

private void SelectImage(object image)
{
    var img = (BitmapImage)image;
    var index = Scans.IndexOf(img);
    this.CurrentIndex = index + 1;
    ImageToDisplay = img;
} 
private ICommand\u selectCommand;
公共ICommand SelectCommand
{
得到
{
返回_selectCommand??(_selectCommand=newdelegateCommand(SelectImage));
}
}
私有图像(对象图像)
{
var img=(位图图像)图像;
var index=Scans.IndexOf(img);
此.CurrentIndex=索引+1;
ImageToDisplay=img;
} 

如何使RoutedCommand工作?

视图模型不应该访问或甚至不知道任何视图元素


您应该将视图中控件的目标属性绑定到视图模型的源属性,您可以在执行命令时在
SelectImage
方法中简单地设置该属性。

您可以将BitmapImage作为CommandParameter发送。我正在这样做,但是,我需要更改与元素关联的按钮,无法访问viewmodel中的ui元素。如何调用该命令?当前是这样的:command=“{Binding ElementName=bindingHelper,Path=DataContext.SelectCommand}”。这本身就起作用了。你不应该直接改变按钮。您可以更改按钮绑定到的属性。是的,但是我只能在4分钟内更改此属性,但是我通常会在一分钟内更改。我会留下来的。