我尝试通过IMultiValueConverter将多个值传递给一个命令(作为命令参数)。这些值在通过转换器时是正确的,但是一旦调用了Can_Execute()和Execute()命令,我就会得到一个空对象数组。有什么想法吗?
Xaml:
<Button Content="+" HorizontalAlignment="Right" VerticalAlignment="Top" Width="23" Height="23" Margin="0,0,0,0">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource Converter_MultipleValues}">
<Binding/>
</MultiBinding>
</Button.CommandParameter>
<Button.Command>
<Binding Path="Command_Add_Files" Source="{StaticResource Vm_FileList}"/>
</Button.Command>
</Button>
IMultiValueConverter类:
class cvt_multivalue : IMultiValueConverter {
public object Convert (object[] Values, Type Target_Type, object Parameter, CultureInfo culture) {
if (Target_Type != typeof (object)) throw new NotSupportedException ();
return Values;
}
public object [] ConvertBack (object Value, Type [] Target_Type, object Parameter, CultureInfo culture) {
throw new NotSupportedException ();
}
}
当我不使用MultiBinding和转换器时,代码工作得很好,但是我需要MultiBinding,这样我就可以向命令传递一些额外的信息。
发布于 2011-01-06 01:23:47
返回Values.Clone()而不仅仅是转换器的值似乎解决了这个问题,但我不确定这是否是最好的做法……
https://stackoverflow.com/questions/4606811
复制相似问题