Duration 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct Duration
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public struct Duration
Public Structure Duration
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
-or-
<object property="Automatic" .../>
-or-
<object property="Forever" .../>
- 継承
-
Duration
- 属性
注釈
Duration
値は、次のプロパティに使用されます。
- Timeline.Duration ( ストーリーボード またはアニメーションで設定できます)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows.UI.Xaml.Controls.MediaElement.NaturalDuration (この使用法はストーリーボード化されたアニメーション シナリオの一部ではありません。それ以外はすべてです)
コード例など、タイムラインの一部として を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 の値を含める必要があります。リテラル : 文字は 、時間 と 分の間、 および分 から 秒の間の区切り記号として使用されます。 たとえば、Duration を 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.Parse をSystem.TimeSpan
hours:minutes:seconds 文字列で呼び出して引数を指定できます。 XAML が文字列形式を解釈する方法であり、タイミングをアニメーション化するためにカルチャ固有の入力を使用しないようにするため、この文字列の解析には常に "en-us" カルチャを使用してください。 - C++ Windows.Foundation.TimeSpan では、 時間:分:秒の文字列形式で作成する方法は サポートされていません。 DurationHelper.FromTimeSpan を使用し、時間:分:秒を C++ Windows.Foundation.TimeSpan データ値 (ミリ秒単位) に変換する方法を自分で変換する必要があります。
自動と永遠
Automatic
と Forever
は、Duration プロパティの値に対して特別な意味を保持する値です。 Microsoft .NET の場合、これらは静的プロパティ Automatic および Forever によって表されます。
XAML またはコードに適用された値は Automatic
、アニメーションではなく ストーリーボード で異なる動作をします。
-
Storyboard の場合、
Automatic
有効な期間は、実行時間が最も長い子アニメーションの終了時刻に等しくなるように設定されます。これにより、子アニメーションのクリッピングは発生しません。 - アニメーションの場合、値は
Automatic
動作を示し、アニメーションは 1 秒 (0:0:1) の期間で実行されます。 この動作は最終的な結果として望ましくありませんが、最終的な期間を確立する前に、テスト中に実行中のアニメーションを表示できます。
重要
アニメーションに を使用 Forever
することは非推奨の使用であり、ほとんど使用されません。 これにより、From To/ やキー フレームなどの値が指定された場合でも、開始値から進まないアニメーションが作成されます。 アニメーションを継続的に繰り返す場合は、 ではなく Duration="Forever"
を使用RepeatBehavior="Forever"
します。
期間のプロジェクションとメンバー
C# を 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++ で使用できる同等のプロパティとメソッドを示しています。
フィールド
TimeSpan |
|
Type |
列挙型のメンバーとしての型。 |