我在IMultiValueConverter中编写了这个转换代码
public object Convert(object[] values ...)
{
return new Microsoft.Practices.Composite.Presentation.Commands.DelegateCommand<object>(
delegate
{
foreach (ICommand cmd in values)
{
cmd.Execute(null);
}
});
}
Run Code Online (Sandbox Code Playgroud)
values参数是两个命令对象,但是当回调执行(WPF mulibinding)时,values数组仅包含空值.为什么?如何解决这个问题?
您的方法中没有任何内容正在更改其值values,因此在这种情况下,就好像values直接捕获变量一样.关于被捕获的变量的正常警告是不适用的 - 当然,除非您在方法中有更多代码,但您没有向我们展示...
请注意,如果在方法返回之后但在委托执行之前其他内容更改了数组中的值,则仍会看到这些更改.如果你不想这样,你应该自己克隆数组:
public object Convert(object[] values)
{
object[] copy = (object[]) values.Clone();
return new DelegateCommand<object>(
delegate
{
foreach (ICommand cmd in copy)
{
cmd.Execute(null);
}
});
}
Run Code Online (Sandbox Code Playgroud)
从你的问题中发现的情况并不是很清楚,但希望这会有所帮助......