Duration Struktur

Definisi

Mewakili durasi waktu garis waktu aktif, atau lebih umum mewakili durasi waktu yang juga mendukung dua nilai khusus Otomatis dan Selamanya.

/// [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" .../>
Warisan
Duration
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Keterangan

Nilai Durasi digunakan untuk properti ini:

Untuk informasi selengkapnya tentang cara menggunakan Durasi sebagai bagian dari Garis Waktu, termasuk contoh kode, lihat Animasi storyboard atauTimeline.Duration.

Penggunaan XAML

Cara paling umum untuk menggunakan nilai Durasi di Windows Runtime adalah dengan mengaturnya menggunakan atribut XAML. Saat Anda menetapkan nilai di XAML, Anda menyediakan string, dan string diurai menggunakan format string jam:menit:detik dan variannya seperti yang dijelaskan di sini.

<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
  • hari: Nilai bilangan bulat lebih besar dari atau sama dengan 0 yang menentukan jumlah hari.
  • jam: Nilai bilangan bulat antara 0 dan 23 yang menentukan jumlah jam. Jika Anda menentukan Durasi sebagai atribut XAML, komponen jam diperlukan, bahkan jika itu adalah 0.
  • menit: Nilai bilangan bulat antara 0 dan 59 yang menentukan jumlah menit. Jika Anda menentukan Durasi sebagai atribut XAML, komponen menit diperlukan, bahkan jika itu adalah 0.
  • detik: Nilai bilangan bulat antara 0 dan 59 yang menentukan jumlah detik. Atur komponen jam:menit sebagai 0:0 jika Anda hanya mengatur komponen detik.
  • fractionalSeconds: Opsional. Nilai desimal yang terdiri dari 1 hingga 7 posisi melewati titik desimal, yang menentukan detik pecahan.
<object property="Automatic" .../>
  • Otomatis: String harfiah Automatic.
<object property="Forever" .../>
  • Selamanya: String Foreverharfiah .

Menentukan Durasi menggunakan string yang menyerupai bilangan bulat, tanpa karakter harfiah yang digunakan dalam format string jam:menit:detik seperti : atau . akan menghasilkan Durasi jumlah hari itu! Ini jarang hasil yang dimaksudkan. Biasanya Anda menentukan durasi animasi dalam detik. Dengan demikian, string Durasi harus menyertakan 0 nilai sebelumnya selama berjam-jam dan menit, dengan harfiah : karakter sebagai pemisah antara jam dan menit, dan antara menit dan detik. Misalnya, untuk menentukan Durasi lima detik, string yang benar untuk nilai atribut XAML adalah "0:0:5" ("0:0:05" setara).

Catatan tentang sintaks XAML

Dalam tata bahasa yang ditunjukkan dalam penggunaan atribut XAML, [ ] (kurung siku) menunjukkan nilai opsional, [ ] bukan harfiah. Karakter : (titik dua) dan . (titik) adalah harfiah, dan dibatasi bentuk string h:m:s dari rentang waktu umum, atau hari opsional dan nilai fractionalSeconds .

Gunakan string harfiah "Otomatis" dan "Selamanya" sebagai nilai atribut XAML jika Anda menginginkan Durasi yang memiliki perilaku seperti yang didokumenkan oleh Duration.Automatic dan Duration.Forever.

Durasi tidak mendukung sintaks elemen objek, dan Anda tidak dapat mendeklarasikan Durasi sebagai item yang dapat dibagikan dalam ResourceDictionary.

Penggunaan kode

Jika Anda menggunakan Durasi dalam kode, Durasi menggunakan definisi waktu yang juga digunakan oleh struktur TimeSpan . Struktur TimeSpan diwakili oleh System.TimeSpan jika Anda memprogram menggunakan C# atau Microsoft Visual Basic, atau Windows.Foundation.TimeSpan jika Anda memprogram menggunakan C++.

  • C# atau Microsoft Visual Basic System.TimeSpan memiliki metode Parse yang menggunakan format string jam:menit:detik . Jika Anda perlu membuat nilai Durasi dalam kode, Anda dapat memanggil konstruktor Durasi dan memberikan argumen System.TimeSpan dengan memanggil TimeSpan.Parse dengan string jam:menit:detik . Selalu gunakan budaya "en-us" untuk mengurai string ini, karena itulah cara XAML menafsirkan format string, dan Anda tidak boleh menggunakan input khusus budaya untuk menanimasikan pengaturan waktu.
  • C++ Windows.Foundation.TimeSpan tidak mendukung cara untuk membuatnya dalam format string jam:menit:detik . Anda harus menggunakan DurationHelper.FromTimeSpan, dan melakukan konversi sendiri untuk bagaimana jam:menit:detik dikonversi ke nilai data C++ Windows.Foundation.TimeSpan , yang merupakan nilai dalam milidetik.

Otomatis dan Selamanya

Otomatis dan Selamanya adalah nilai yang menyimpan arti khusus untuk nilai properti Durasi. Untuk Microsoft .NET, ini diwakili oleh properti statis Otomatis dan Selamanya.

Nilai Otomatis yang diterapkan di XAML atau kode menghasilkan perilaku yang berbeda pada Papan Cerita dibandingkan dengan animasi.

  • Untuk Papan-cerita, nilai Otomatis menetapkan rentang waktu efektif agar sama dengan waktu akhir animasi anak terlamanya, sehingga tidak ada kliping yang terjadi untuk animasi anak apa pun.
  • Untuk animasi, nilai Otomatis menghasilkan perilaku di mana animasi berjalan dengan rentang waktu 1 detik (0:0:1). Perilaku ini jarang diinginkan sebagai hasil akhir, tetapi memungkinkan Anda untuk melihat animasi yang sedang berjalan selama pengujian, sebelum Anda menetapkan rentang waktu akhir.

Penting

Menggunakan Selamanya untuk animasi adalah penggunaan yang tidak digunakan lagi, dan jarang digunakan. Ini menghasilkan animasi yang tidak pernah maju dari nilai awalnya, tidak peduli nilai apa yang disediakan untuk Dari/Ke, bingkai kunci, dan sebagainya. Jika Anda ingin animasi diulang terus menerus, gunakan RepeatBehavior="Forever", bukan Duration="Forever".

Proyeksi dan anggota Durasi

Jika Anda menggunakan bahasa Microsoft .NET (C# atau Microsoft Visual Basic), atau ekstensi komponen Visual C++ (C++/CX), maka Durasi memiliki anggota non-data yang tersedia, dan anggota datanya diekspos sebagai properti baca-tulis, bukan bidang. Durasi mengekspos beberapa operator, termasuk operator perbandingan. Lihat Durasi di Browser .NET API.

Untuk Microsoft .NET, Durasi mengekspos TimeSpan.Parse untuk properti TimeSpan - nya, operator Implisit dan UnaryPlus , dan Tambahkan dan Kurangi metode. Ini tidak tersedia dari struktur di ekstensi komponen Visual C++ (C++/CX) tetapi Anda dapat menggunakan metode DurationHelper yang setara untuk beberapa di antaranya.

Jika Anda memprogram dengan C++/WinRT atau Windows Runtime C++ Template Library (WRL), maka hanya bidang anggota data yang ada sebagai anggota Durasi, dan Anda tidak dapat menggunakan metode utilitas atau properti proyeksi .NET. Kode C++ dapat mengakses metode utilitas serupa yang ada di kelas DurationHelper . Misalnya, Anda dapat memanggil DurationHelper.Compare untuk membandingkan dua nilai Durasi C++. Untuk informasi selengkapnya, lihat DurationHelper.

Tabel ini memperlihatkan properti dan metode yang setara yang tersedia di .NET dan C++.

.NET (Durasi) C++ (DurationHelper)
Durasi(Rentang Waktu) FromTimeSpan(TimeSpan)
Otomatis Otomatis
Selamanya Selamanya
HasTimeSpan GetHasTimeSpan(Duration)
Tambah(Durasi) Add(Duration, Duration)
Compare(Duration, Duration) Compare(Duration, Duration)
Equals Sama dengan(Durasi, Durasi)
Kurangi(Durasi) Kurangi(Durasi, Durasi)

Bidang

TimeSpan

Komponen nilai TimeSpan .

Type

Jenis sebagai anggota enumerasi.

Berlaku untuk

Lihat juga