我在IMultiValueConverter中编写了这个转换代码
public object Convert(object[] values ...)
{
return new Microsoft.Practices.Composite.Presentation.Commands.DelegateCommand<object>(
delegate
{
foreach (ICommand cmd in values)
{
cmd.Execute(null);
}
});
}
值参数是两个命令对象,但是当回调执行时(WPF mulibinding),值数组仅包含空值。为什么?如何解决这个问题?
答案 0 :(得分:6)
您的方法中没有任何内容正在更改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);
}
});
}
从你的问题中发现的情况并不是很清楚,但希望这会有所帮助......