Saya ingin menggunakan format string bernama Tanggal Pendek di WPF.
Saya mencoba sesuatu seperti:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
Bagaimana cara melakukannya?
Coba ini:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
yang peka budaya dan membutuhkan .NET 3.5 SP1 atau lebih tinggi.
CATATAN: Ini peka huruf besar / kecil. "d" adalah penentu format tanggal pendek sedangkan "D" adalah penentu format tanggal panjang .
Ada daftar lengkap format string di halaman MSDN di Standard Date and Time Format Strings dan penjelasan lebih lengkap tentang semua opsi di posting blog MSDN ini
Namun, ada satu gotcha dengan ini - selalu menampilkan tanggal dalam format AS kecuali Anda mengatur sendiri budaya ke nilai yang benar.
Jika Anda tidak menyetel properti ini, mesin pengikat menggunakan properti Bahasa dari objek target pengikatan. Di XAML, defaultnya adalah "en-US" atau mewarisi nilai dari elemen root (atau elemen apa pun) halaman, jika telah ditetapkan secara eksplisit.
Salah satu cara untuk melakukan ini adalah di kode di belakang (dengan asumsi Anda telah mengatur budaya utas ke nilai yang benar):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
Cara lain adalah dengan mengatur budaya konverter dalam pengikatan:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
Meskipun ini tidak memungkinkan Anda untuk melokalkan keluaran.
Atau gunakan ini untuk format bahasa Inggris (atau gabungkan untuk custom):
sumber
Gunakan
StringFormat
properti (atauContentStringFormat
padaContentControl
dan turunannya, misalnyaLabel
).<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Perhatikan bahwa
{}
sebelum standarString.Format
argumen posisi, notasi memungkinkan tanda kurung di-escape dalam bahasa ekstensi markup.sumber
{}
akan memungkinkan Anda untuk menggunakanStringFormat='{}Created Date:{0:d}'
yang sebaliknya akan menghasilkan hasil yang tidak terduga.Beberapa contoh StringFormat DateTime menurut saya berguna. Diangkat dari Contoh C #
sumber
Jika Anda ingin menambahkan string dengan nilai gunakan ini:
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />
sumber
Perhatikan tanda kutip tunggal untuk format string. Ini tidak berhasil:
sementara ini:
sumber
Gunakan saja:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
sumber