2013-04-27 50 views
2

我需要用时间跨度类型在下面的方式命名SumOfPeriods属性绑定TextBlock.Text:XAML - 结合路径= TimeSpan.TotalMinutes

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0:D1} h {1:D1} min ({2:D1} min)"> 
      <Binding Path="SumOfPeriods.Hours" /> 
      <Binding Path="SumOfPeriods.Minutes" /> 
      <Binding Path="SumOfPeriods.TotalMinutes" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

...但它不工作。内容不显示。 当我删除绑定到它的工作原理和显示内容TotalMinutes:

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0:D1} h {1:D1} min"> 
      <Binding Path="SumOfPeriods.Hours" /> 
      <Binding Path="SumOfPeriods.Minutes" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

任何人都可以帮我吗?

回答

3

TotalMinutesDouble,但D format specifier仅支持整数类型,如Int32。格式字符串如{}{0:D1} h {1:D1} min ({2} min)应该可以工作。

0

A转换器可以解决你的问题:

public class PeriodConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var timeSpan = (TimeSpan)value; 

     // add your format here 
     var text = string.Format("", timeSpan); 

     return text; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Binding.DoNothing; 
    } 
} 

转换器添加到您的资源:

<FrameworkElement.Resources> 
    <converters:PeriodConverter x:Key="periodConverter" /> 
</FrameworkElement.Resources> 

更新您的TextBlock的绑定:

<TextBlock Text={Binding Path=SumOfPeriods, Converter={StaticResource periodConverter}} />