다음을 통해 공유


Duration 구조체

정의

타임라인이 활성 상태이거나 일반적으로 두 개의 특수 값 AutomaticForever도 지원하는 기간을 나타내는 기간을 나타냅니다.

/// [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 값은 다음 속성에 사용됩니다.

코드 예제를 포함하여 타임라인의 일부로 를 Duration 사용하는 방법에 대한 자세한 내용은 Storyboarded 애니메이션 또는 Timeline.Duration을 참조하세요.

XAML 사용

Windows 런타임 값을 사용하는 Duration 가장 일반적인 방법은 XAML 특성을 사용하여 설정하는 것입니다. XAML에서 값을 설정하면 문자열이 제공되고 여기에 설명된 대로 시간:: 문자열 형식 및 해당 변형을 사용하여 문자열이 구문 분석됩니다.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • days: 일 수를 지정하는 0보다 크거나 같은 정수 값입니다.
  • hours: 시간 수를 지정하는 0에서 23 사이의 정수 값입니다. Duration을 XAML 특성으로 지정하는 경우 0이더라도 시간 구성 요소가 필요합니다.
  • minutes: 분 수를 지정하는 0에서 59 사이의 정수 값입니다. Duration을 XAML 특성으로 지정하는 경우 분 구성 요소는 0인 경우에도 필요합니다.
  • seconds: 초 수를 지정하는 0에서 59 사이의 정수 값입니다. 초 구성 요소만 설정하는 경우 시간:분 구성 요소를 0:0으로 설정합니다.
  • fractionalSeconds: 선택 사항입니다. 소수점 이하의 1~7개 위치로 구성된 10진수 값으로, 소수 자릿수 초를 지정합니다.
<object property="Automatic" .../>
  • 자동: 리터럴 문자열 Automatic입니다.
<object property="Forever" .../>
  • Forever: 리터럴 문자열 Forever입니다.

시간:: 문자열 형식(예: :또는 )에 사용된 리터럴 문자 없이 정수와 유사한 문자열을 사용하여 Duration을 지정하면 해당 기간(일)이 발생합니다. 의도한 결과는 거의 없습니다. 일반적으로 애니메이션 기간을 초 단위로 지정합니다. 따라서 Duration 문자열에는 리터럴 : 문자가 시간사이의 구분 기호로, 분과사이의 앞에 오는 0 값이 포함되어야 합니다. 예를 들어 Duration을 5초로 지정하려면 XAML 특성 값에 대한 올바른 문자열은 "0:0:5"입니다("0:0:05"는 동일).

XAML 구문에 대한 참고 사항

XAML 특성 사용에 표시된 문법에서 [ ] (대괄호)는 선택적 값을 나타내며 [ ]는 리터럴이 아닙니다. : (콜론) 및 (마침표) 문자는 모두 리터럴이며 공통 시간 범위의 h:m:s 문자열 형식 또는 선택적 daysfractionalSeconds 값을 구분합니다.

Duration.AutomaticDuration.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 수 있습니다. XAML이 문자열 형식을 해석하는 방식이기 때문에 항상 이 문자열을 구문 분석하기 위해 "en-us" 문화권을 사용하고, 어쨌든 타이밍에 애니메이션 효과를 주는 문화권별 입력을 사용하면 안 됩니다.
  • C++ Windows.Foundation.TimeSpan시간:: 문자열 형식으로 만드는 방법을 지원하지 않습니다. DurationHelper.FromTimeSpan을 사용하고 시간::가 C++ Windows.Foundation.TimeSpan 데이터 값(밀리초)으로 변환되는 방식에 대해 직접 변환을 수행해야 합니다.

자동 및 포에버

AutomaticForever 는 Duration 속성 값에 대해 특별한 의미를 갖는 값입니다. Microsoft .NET의 경우 자동 및영원히 정적 속성으로 표시됩니다.

XAML 또는 코드에 적용된 값은 Automatic 애니메이션이 아닌 Storyboard 에서 다른 동작을 생성합니다.

  • Storyboard의 경우 값은 Automatic 유효 시간 범위를 가장 오래 실행되는 자식 애니메이션의 종료 시간과 같게 설정하므로 자식 애니메이션에 대해 클리핑이 발생하지 않습니다.
  • 애니메이션의 경우 값은 Automatic 애니메이션이 1초(0:0:1)의 시간 범위로 실행되는 동작을 발생합니다. 이 동작은 최종 결과로 바람직하지는 않지만 최종 시간 범위를 설정하기 전에 테스트 중에 실행 중인 애니메이션을 볼 수 있습니다.

중요

애니메이션에 를 사용하는 Forever 것은 사용되지 않으며 거의 사용되지 않습니다. 그러면 시작/위치, 키 프레임 등에 제공된 값에 관계없이 시작 값에서 절대로 진행되지 않는 애니메이션이 생성됩니다. 애니메이션이 계속 반복되도록 하려면 가 아닌 Duration="Forever"를 사용합니다RepeatBehavior="Forever".

기간의 프로젝션 및 멤버

C# Duration 을 사용하는 경우 비데이터 멤버를 사용할 수 있고 해당 데이터 멤버는 필드가 아닌 읽기-쓰기 속성으로 노출됩니다. Duration 는 비교 연산자를 포함하여 여러 연산자를 노출합니다. .NET API 브라우저의 기간을 참조하세요.

Microsoft .NET의 경우 Duration은 TimeSpan 속성, 암시적UnaryPlus 연산자 및 AddSubtract 메서드에 대해 TimeSpan.Parse를 노출합니다. 이러한 구성 요소는 Visual C++ 구성 요소 확장(C++/CX)의 구조에서 사용할 수 없지만 이러한 구성 요소 중 일부에 해당하는 DurationHelper 메서드를 사용할 수 있습니다.

C++/WinRT 또는 Windows 런타임 C++ WRL(템플릿 라이브러리)을 사용하여 프로그래밍하는 경우 데이터 멤버 필드만 의 Duration멤버로 존재하며 .NET 프로젝션의 유틸리티 메서드 또는 속성을 사용할 수 없습니다. C++ 코드는 DurationHelper 클래스에 있는 유사한 유틸리티 메서드에 액세스할 수 있습니다. 예를 들어 DurationHelper.Compare 를 호출하여 두 C++ Duration 값을 비교할 수 있습니다. 자세한 내용은 DurationHelper를 참조하세요.

이 표에서는 .NET 및 C++에서 사용할 수 있는 동등한 속성과 메서드를 보여 줍니다.

.NET(기간) C++(DurationHelper)
Duration(TimeSpan) FromTimeSpan(TimeSpan)
자동 자동
영원히 영원히
HasTimeSpan GetHasTimeSpan(기간)
Add(Duration) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
같음 Equals(Duration, Duration)
Subtract(Duration) Subtract(Duration, Duration)

필드

TimeSpan

값 구성 요소입니다 TimeSpan .

Type

열거형의 멤버인 형식입니다.

적용 대상

추가 정보