Duration 構造体

定義

タイムラインがアクティブな期間を表します。または、通常は、2 つの特別な値 AutomaticForever もサポートする期間を表します。

/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Duration
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Duration
Public Structure Duration
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
-or-
<object property="Automatic" .../>
-or-
<object property="Forever" .../>
継承
Duration
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

注釈

Duration 値は、次のプロパティに使用されます。

コード例など、 タイムラインの一部として期間を使用する方法の詳細については、「 ストーリーボードされたアニメーション 」または 「Timeline.Duration」を参照してください。

XAML の使用方法

Windows ランタイムで Duration 値を使用する最も一般的な方法は、XAML 属性を使用して設定することです。 XAML で値を設定すると、文字列が指定され、ここで説明するように、 hours:minutes:seconds 文字列形式とそのバリアントを使用して文字列が解析されます。

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: 日数を指定する 0 以上の整数値。
  • hours: 時間数を指定する 0 ~ 23 の整数値。 XAML 属性として Duration を指定する場合は、0 であっても時間コンポーネントが必要です。
  • minutes: 分数を指定する 0 ~ 59 の整数値。 XAML 属性として Duration を指定した場合は、0 であっても分単位のコンポーネントが必要です。
  • seconds: 秒数を指定する 0 ~ 59 の整数値。 秒のコンポーネントのみを設定する場合は、hours:minutes コンポーネントを 0:0 に設定します。
  • fractionalSeconds: 省略可能。 小数部の秒を指定する、小数点の 1 から 7 の位置から成る 10 進値。
<object property="Automatic" .../>
  • 自動: リテラル文字列 Automatic
<object property="Forever" .../>
  • Forever: リテラル文字列 Forever

整数に似た文字列を使用して Duration を指定すると、 hours:minutes:seconds 文字列形式で使用されるリテラル文字 ( :や など ) は、その日数の期間になります。 これが意図した結果となることはほとんどありません。 通常、アニメーションの継続時間を秒単位で指定します。 そのため、Duration 文字列には、 時間の前に 0 の値を含める必要があります。リテラル : 文字は 、時間の間、 および分 から 秒の間の区切り記号として使用されます。 たとえば、期間を 5 秒に指定する場合、XAML 属性値の正しい文字列は "0:0:5" です ("0:0:05" は同等です)。

XAML 構文に関する注意事項

XAML 属性の使用法に示されている文法では、[ ] (角かっこ) は省略可能な値を示し、[ ] はリテラルではありません。 : (コロン) 文字と . (ピリオド) 文字はどちらもリテラルであり、共通の期間の h:m:s 文字列形式、またはオプションの days 値と fractionalSeconds 値を区切ります。

Duration.Automatic および Duration.Forever に記載されている動作を持つ Duration が必要な場合は、リテラル文字列 "Automatic" と "Forever" を XAML 属性値として使用します。

Duration はオブジェクト要素の構文をサポートしていないため、 ResourceDictionary で共有可能なアイテムとして Duration を宣言することはできません。

コードの使用

コードで Duration を使用している場合、Duration は TimeSpan 構造体でも使用される時間の定義を使用します。 TimeSpan 構造体は、C# または Microsoft Visual Basic を使用してプログラミングする場合は System.TimeSpan、C++ を使用してプログラミングする場合は Windows.Foundation.TimeSpan で表されます。

  • C# または Microsoft Visual Basic System.TimeSpan には、hours:minutes:seconds 文字列形式を使用する Parse メソッドがあります。 コードで Duration 値を作成する必要がある場合は、Duration コンストラクターを呼び出し、TimeSpan.Parsehours:minutes:seconds 文字列で呼び出して System.TimeSpan 引数を指定できます。 XAML が文字列形式を解釈する方法であり、タイミングをアニメーション化するためにカルチャ固有の入力を使用しないようにするため、この文字列の解析には必ず "en-us" カルチャを使用してください。
  • C++ Windows.Foundation.TimeSpan では、 時間::秒の文字列形式で作成する方法は サポートされていません。 DurationHelper.FromTimeSpan を使用し、時間::を C++ Windows.Foundation.TimeSpan データ値 (ミリ秒単位) に変換する方法については、自分で変換する必要があります。

自動および永遠

Automatic および Forever は、Duration プロパティ値に対して特別な意味を持つ値です。 Microsoft .NET の場合、これらは静的プロパティ AutomaticForever によって表されます。

XAML またはコードで適用される 自動 値は、アニメーションとは対照的に ストーリーボード で異なる動作になります。

  • Storyboard の場合、 [自動] の値は、実行時間が最も長い子アニメーションの終了時刻に等しくなるように有効な期間を設定します。これにより、子アニメーションのクリッピングは発生しません。
  • アニメーションの場合、 Automatic 値を指定すると、アニメーションが 1 秒 (0:0:1) の期間で実行される動作になります。 この動作は最終的な結果としてあまり望ましくありませんが、最終的な期間を確立する前に、テスト中に実行中のアニメーションを表示できます。

重要

アニメーションに Forever を使用することは非推奨の使用であり、ほとんど使用されません。 これにより、 From/To やキー フレームなどの値が指定されても、開始値から進まないアニメーションが作成されます。 アニメーションを継続的に繰り返す場合は、 ではなく Duration="Forever"を使用RepeatBehavior="Forever"します。

期間のプロジェクションとメンバー

Microsoft .NET 言語 (C# または Microsoft Visual Basic)、または Visual C++ コンポーネント拡張機能 (C++/CX) を使用している場合、Duration には非データ メンバーが使用でき、そのデータ メンバーはフィールドではなく読み取り/書き込みプロパティとして公開されます。 Duration は、比較演算子を含む複数の演算子を公開します。 「.NET API ブラウザーの 期間」 を参照してください。

Microsoft .NET の場合、Duration は TimeSpan プロパティ、Implicit および UnaryPlus 演算子、Add メソッドと Subtract メソッドの TimeSpan.Parse を公開します。 これらは Visual C++ コンポーネント拡張機能 (C++/CX) の 構造体からは使用できませんが、これらの一部には同等の DurationHelper メソッドを使用できます。

C++/WinRT または Windows ランタイム C++ テンプレート ライブラリ (WRL) を使用してプログラミングする場合、データ メンバー フィールドのみが Duration のメンバーとして存在し、.NET プロジェクションのユーティリティ メソッドまたはプロパティを使用することはできません。 C++ コードは、 DurationHelper クラスに存在する同様のユーティリティ メソッドにアクセスできます。 たとえば、 DurationHelper.Compare を呼び出して、2 つの C++ Duration 値を比較できます。 詳細については、「 DurationHelper」を参照してください。

次の表は、.NET と C++ で使用できる同等のプロパティとメソッドを示しています。

.NET (期間) C++ (DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
自動 自動
絶えず 絶えず
HasTimeSpan GetHasTimeSpan(Duration)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
[等しい] Equals(Duration, Duration)
Subtract(Duration) Subtract(Duration, Duration)

フィールド

TimeSpan

TimeSpan 値コンポーネント。

Type

列挙型のメンバーとしての型。

適用対象

こちらもご覧ください