2

次の方法で、TimeSpan 型の SumOfPeriods という名前のプロパティに TextBlock.Text をバインドする必要があります。

<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>

誰でも私を助けることができますか?

4

2 に答える 2

0

コンバーターはあなたの問題を解決することができます:

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}} />
于 2013-04-27T23:23:43.883 に答える