আমি ডাব্লুপিএফ-এ সংক্ষিপ্ত তারিখ নামের স্ট্রিং বিন্যাসটি ব্যবহার করতে চাই।
আমি এরকম কিছু চেষ্টা করেছি:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
এই কিভাবে করবেন?
উত্তর:
এটা চেষ্টা কর:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
যা সংস্কৃতি সংবেদনশীল এবং NET 3.5 এসপি 1 বা ততোধিক প্রয়োজন।
দ্রষ্টব্য: এটি কেস সংবেদনশীল। "ডি" হ'ল সংক্ষিপ্ত তারিখের বিন্যাস নির্দিষ্টকরণকারী যখন "ডি" দীর্ঘ তারিখের ফর্ম্যাট নির্দিষ্টকরণকারী ।
স্ট্যান্ডার্ড তারিখ এবং সময় ফর্ম্যাট স্ট্রিংগুলিতে এমএসডিএন পৃষ্ঠায় স্ট্রিং ফর্ম্যাটের একটি সম্পূর্ণ তালিকা এবং এই এমএসডিএন ব্লগ পোস্টে সমস্ত বিকল্পের পূর্ণ বিবরণ রয়েছে
যাইহোক, এটির সাথে একটি গ্যাচা রয়েছে - আপনি নিজের সংস্কৃতিটিকে সঠিক মান হিসাবে সেট না করে এটি সর্বদা মার্কিন ফর্ম্যাটে তারিখটি ছাড়িয়ে যায়।
আপনি যদি এই সম্পত্তিটি সেট না করেন, তবে বাইন্ডিং ইঞ্জিন বন্ডিং টার্গেট অবজেক্টের ল্যাঙ্গুয়েজ প্রোপার্টি ব্যবহার করে । এক্সএএমএল-এ এইটিকে "এন-ইউএস" -তে ডিফল্ট করা হয় বা পৃষ্ঠার মূল উপাদান (বা কোনও উপাদান) থেকে মানটি উত্তরাধিকার সূত্রে প্রাপ্ত হয়, যদি কোনও একটি নির্দিষ্টভাবে সেট করা থাকে।
এটি করার একটি উপায় হ'ল পিছনের কোডটি (ধরে নিই যে আপনি থ্রেডের সংস্কৃতিটিকে সঠিক মান হিসাবে সেট করেছেন):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
অন্য উপায় হ'ল বাঁধার মধ্যে রূপান্তর সংস্কৃতি সেট করা:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
যদিও এটি আপনাকে আউটপুট স্থানীয়করণ করতে দেয় না।
বা এটি একটি ইংরেজী (বা এটি কাস্টম হিসাবে মিশ্রিত) ফর্ম্যাট জন্য ব্যবহার করুন:
StringFormat='{}{0:dd/MM/yyyy}'
ব্যবহার করুন StringFormat
সম্পত্তি (অথবা ContentStringFormat
উপর ContentControl
এবং তার ডেরাইভেটিভস, যেমন Label
)।
<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
{}
স্ট্যান্ডার্ড String.Format
পজিশনাল আর্গুমেন্ট নোটেশনের পূর্বে নোট করুন মার্কস এক্সটেনশন ভাষায় ধনুর্বন্ধনীগুলি এড়ানোর অনুমতি দেয়।
{}
আপনাকে ব্যবহার করতে দেয় StringFormat='{}Created Date:{0:d}'
যা অন্যথায় অপ্রত্যাশিত ফলাফল আনতে পারে।
কিছু ডেটটাইম স্ট্রিংফর্ম্যাট নমুনা আমি দরকারী বলে মনে করি। সি # উদাহরণ থেকে উত্তোলিত
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
String.Format("{0:m mm}", dt); // "5 05" minute
String.Format("{0:s ss}", dt); // "7 07" second
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes
String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M.
String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone
স্ট্রিং বিন্যাসের জন্য একক উদ্ধৃতি সম্পর্কে সচেতন হন। এটি কাজ করে না:
Content="{Binding PlannedDateTime, StringFormat={}{0:yy.MM.dd HH:mm}}"
যখন এটি করে:
Content="{Binding PlannedDateTime, StringFormat='{}{0:yy.MM.dd HH:mm}'}"