WPF বাইন্ডিং স্ট্রিংফর্ম্যাট সংক্ষিপ্ত তারিখের স্ট্রিং


89

আমি ডাব্লুপিএফ-এ সংক্ষিপ্ত তারিখ নামের স্ট্রিং বিন্যাসটি ব্যবহার করতে চাই।

আমি এরকম কিছু চেষ্টা করেছি:

<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />

এই কিভাবে করবেন?

উত্তর:


179

এটা চেষ্টা কর:

<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}" />

যদিও এটি আপনাকে আউটপুট স্থানীয়করণ করতে দেয় না।


ধন্যবাদ! তুমি বুঝতে পেরেছ! যখন আমি জিজ্ঞাসা করলাম আমার মনে ছিল শর্ট ডেট স্ট্রিং ফর্ম্যাটটি কী, আমি স্ট্রিং ফর্ম্যাটের তালিকাটি কোথায় খুঁজে পেতে পারি এবং আমি পছন্দ করেছি যে আপনি স্ট্রিংফর্ম্যাট = ডি দিয়ে উত্তর দিয়েছেন। খুব পরিষ্কার এবং সম্পূর্ণ।
টনি

সংস্কৃতি সেটিংস নির্বিশেষে এটি কি সর্বদা মার্কিন ফর্ম্যাটটিকে আউটপুট দেয়?
ক্রিস

@ ক্রিস - হ্যাঁ এটি করে - কোনও কারণে - আপনি নিজে সংস্কৃতি সেট করেছেন।
ChrisF

4
ধন্যবাদ, ইউআই "ডি" একই তারিখের অবজেক্টের xaml.cs "d" থেকে আলাদা হয়ে গেলে খুব খারাপ।
ক্রিস

ডাব্লুপিএফ সংস্কৃতি বাগটি রেফ করুন, আমি কেবল এটি যুক্ত করি ang ভাষা = সিস্টেম. উইন্ডোজ.মার্কআপ.এক্সএমএল ভাষাবিজ্ঞান.গেটল্যাঙ্গোয়েজ (সিস্টেম.গ্লোবালাইজেশন.ক্ল্যাচারআইনফোর.কন্টেনক্রালচার.আইটিএফএল্যাঙ্গুয়েজ ট্যাগ); প্রতিটি উইন্ডোতে ইনিশিয়াল কম্পোনেন্টের পরে;
পিটারজি

54

বা এটি একটি ইংরেজী (বা এটি কাস্টম হিসাবে মিশ্রিত) ফর্ম্যাট জন্য ব্যবহার করুন:

StringFormat='{}{0:dd/MM/yyyy}'

4
আপনি আপনার বন্ডিংয়ে 'কনভার্টারকल्চার =' ব্যবহার করতে পারেন - ফর্ম্যাটটি নির্দেশ করার জন্য একটি মান প্রয়োজন। (রূপান্তরকারী সংস্কৃতি = 'এন জিবি' গ্রেট ব্রিটেন)।
অন্যথায়

এই সমস্যার জন্য সেরা এবং সহজ উত্তর
স্টিভেন

চিয়ার্স স্টিভেন! আমি রূপান্তরকারী সংস্কৃতি অ্যাড-অনের "বিজয়ী" জবাবটিও পরাজিত করেছি ... তবে তাই হোক।
অন্যথায়

28

ব্যবহার করুন StringFormatসম্পত্তি (অথবা ContentStringFormatউপর ContentControlএবং তার ডেরাইভেটিভস, যেমন Label)।

<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />

{}স্ট্যান্ডার্ড String.Formatপজিশনাল আর্গুমেন্ট নোটেশনের পূর্বে নোট করুন মার্কস এক্সটেনশন ভাষায় ধনুর্বন্ধনীগুলি এড়ানোর অনুমতি দেয়।


4
এটি {}আপনাকে ব্যবহার করতে দেয় StringFormat='{}Created Date:{0:d}'যা অন্যথায় অপ্রত্যাশিত ফলাফল আনতে পারে।
বাদামি মনস্টার

13

কিছু ডেটটাইম স্ট্রিংফর্ম্যাট নমুনা আমি দরকারী বলে মনে করি। সি # উদাহরণ থেকে উত্তোলিত

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

5

আপনি যদি মানটির সাথে একটি স্ট্রিং যুক্ত করতে চান তবে এটি ব্যবহার করুন:

<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />

5

স্ট্রিং বিন্যাসের জন্য একক উদ্ধৃতি সম্পর্কে সচেতন হন। এটি কাজ করে না:

    Content="{Binding PlannedDateTime, StringFormat={}{0:yy.MM.dd HH:mm}}"

যখন এটি করে:

    Content="{Binding PlannedDateTime, StringFormat='{}{0:yy.MM.dd HH:mm}'}"

4

শুধু ব্যবহার করুন:

<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.