我得到了这个绑定的一个例外
<TextBlock.Text>
<MultiBinding Converter="{StaticResource converter}" Mode="OneWay">
<Binding Path="TimeSpanProperty" />
<Binding Path="FormsttingOption" />
</MultiBinding>
</TextBlock.Text>
// converter.Convert code
if (formsttingOption == DurationFormat.Minutes)
return Math.Round(timeSpan.TotalMinutes);
else
return duration;BindingExpression生成的值对于目标属性无效。;Value='164‘MultiBindingExpression:目标元素为'TextBlock’(名称=‘’);目标属性为'Text‘(类型为'String')
基于格式设置选项,转换器将转换TimeSpan值。在上面的示例中,FormattingOption是分钟,这意味着TimeSpan值将转换为分钟(164)。
由于某些原因,Text属性不接受此值。有人知道原因和解决办法吗?
发布于 2014-07-30 23:32:56
我认为这个错误很好地解释了这一点:
BindingExpression生成的值对于目标属性无效。;Value='164‘MultiBindingExpression:目标元素为'TextBlock’(名称=‘’);目标属性为'Text‘(类型为'String')
它告诉您,TextBlock.Text是String类型的,您的转换器没有生成有效值。
在IMultiValueConverter.Convert方法中,确保返回一个String,即
public object Convert(object[] values, Type targetType, Object parameter, CultureInfo culture)
{
var timeSpan = (TimeSpan)values[0];
var formattingOption = (DurationFormat)values[1];
if(formattingOption == DurationFormat.Minutes)
{
return Math.Round(timeSpan.TotalMinutes).ToString(culture);
}
return duration.ToString(); // TODO not sure where duration comes from
}https://stackoverflow.com/questions/25048550
复制相似问题