Duration Struktur
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili durasi waktu garis waktu aktif, atau lebih umum mewakili durasi waktu yang juga mendukung dua nilai Automatic
khusus dan Forever
.
/// [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" .../>
- Warisan
-
Duration
- Atribut
Keterangan
Duration
Nilai digunakan untuk properti ini:
- Timeline.Duration (dapat diatur pada Storyboard atau animasi)
- VisualTransition.GeneratedDuration
- RepeatBehavior.Duration
- Windows.UI.Xaml.Controls.MediaElement.NaturalDuration (penggunaan ini bukan bagian dari skenario animasi papan cerita; yang lainnya adalah)
Untuk informasi selengkapnya tentang cara menggunakan Duration
sebagai bagian dari Garis Waktu, termasuk contoh kode, lihat Animasi papan cerita atau Timeline.Duration.
Penggunaan XAML
Cara paling umum untuk menggunakan Duration
nilai dalam 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
Forever
harfiah .
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 Duration
dalam kode, Duration
menggunakan definisi waktu yang juga digunakan oleh TimeSpan
struktur. 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
Duration
nilai dalam kode, Anda dapat memanggil konstruktor Durasi dan memberikanSystem.TimeSpan
argumen 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
Automatic
dan Forever
adalah nilai yang menyimpan arti khusus untuk nilai properti Durasi. Untuk Microsoft .NET, ini diwakili oleh properti statis Otomatis dan Selamanya.
Nilai Automatic
yang diterapkan di XAML atau kode menghasilkan perilaku yang berbeda pada Storyboard dibandingkan dengan animasi.
- Untuk Papan Cerita,
Automatic
nilai 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,
Automatic
nilai 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 Forever
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 C#, maka Duration
memiliki anggota non-data yang tersedia, dan anggota datanya diekspos sebagai properti baca-tulis, bukan bidang.
Duration
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 Duration
, 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 C++ Duration
. Untuk informasi selengkapnya, lihat DurationHelper.
Tabel ini memperlihatkan properti dan metode yang setara yang tersedia di .NET dan C++.
Bidang
TimeSpan |
Komponen |
Type |
Jenis sebagai anggota enumerasi. |