4

プロパティに XAML StringFormat を適用しようとしていTimeSpanます。

注:この質問はWindows Phoneに適用されます。

WPF の正しい構文は次のとおりです。

Text="{Binding ElapsedTime,StringFormat={}{0:m\\:ss}}"

Silverlight の場合、単一引用符が必要です。

Text="{Binding ElapsedTime,StringFormat='{}{0:m\\:ss}'}"

しかし、Windows Phone の場合、何を試しても、出力は常に完全な「00:00:00.0000000」です。

  • StringFormat='m\\:ss'
  • StringFormat='{}{0:m\\:ss}'
  • StringFormat='m\:ss'
  • StringFormat=m\\:ss

どういうわけか正しい順列を見逃したのでしょうか、それとも Windows Phone では何らかの理由でこれができないのでしょうか?


アップデート

私は回避策(以下の回答)を使用しましたが、誰かが知っていれば、奇妙さの説明が必要です。(私が「奇妙さ」と言うのは、プロパティではなく、プロパティでStringFormat完全にうまく機能するからです。)DateTimeTimeSpan

アップデート #2

2010年からの非常によく似た質問。たぶん、これは.Netの古いバージョンや「コンパクト」バージョンの問題です。または、この答え( StringFormat=\{0:h\\:mm\}) は機能しますか?

4

2 に答える 2

3

私は最終的に回避策を使用しました。

<TextBlock Text="{Binding DurationStr}" />

ビューモデルの新しいプロパティ:

public string DurationStr
{
    get { return Duration.ToString(@"m\:ss"); }
}

public TimeSpan Duration
{
    get { return _duration; }
    set
    {
        _duration = value;
        RaisePropertyChanged("Duration");
        RaisePropertyChanged("DurationStr");
    }
}
private TimeSpan _duration;
于 2013-09-09T16:40:40.317 に答える