首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TimeSpan绑定到IMultiValueConverter字段

用TimeSpan绑定到IMultiValueConverter字段
EN

Stack Overflow用户
提问于 2014-07-30 23:20:04
回答 1查看 75关注 0票数 0

我得到了这个绑定的一个例外

代码语言:javascript
复制
<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属性不接受此值。有人知道原因和解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 23:32:56

我认为这个错误很好地解释了这一点:

BindingExpression生成的值对于目标属性无效。;Value='164‘MultiBindingExpression:目标元素为'TextBlock’(名称=‘’);目标属性为'Text‘(类型为'String')

它告诉您,TextBlock.TextString类型的,您的转换器没有生成有效值。

IMultiValueConverter.Convert方法中,确保返回一个String,即

代码语言:javascript
复制
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
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25048550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档