আমি এ জাতীয় কোডের একটি লাইন ব্যবহার করে গতিশীলভাবে একটি কলাম যুক্ত করতে সক্ষম করেছিলাম:
MyItemsCollection.AddPropertyDescriptor(
new DynamicPropertyDescriptor<User, int>("Age", x => x.Age));
প্রশ্নের সাথে সম্পর্কিত, এটি কোনও এক্সএএমএল-ভিত্তিক সমাধান নয় (যেহেতু উল্লিখিত হিসাবে এটি করার কোনও যুক্তিসঙ্গত উপায় নেই), তেমনি এটি এমন কোনও সমাধান নয় যা সরাসরি ডেটাগ্রিড.কলামগুলির সাথে কাজ করবে। এটি আসলে ডেটাগ্রিড বাউন্ড আইটেমসোর্স দিয়ে কাজ করে যা আইটি টাইপলিস্ট প্রয়োগ করে এবং যেমন সম্পত্তি-বিবরণী পুনরুদ্ধারের জন্য কাস্টম পদ্ধতি সরবরাহ করে। কোডে এক জায়গায় আপনি আপনার গ্রিডের জন্য "ডেটা সারি" এবং "ডেটা কলাম" সংজ্ঞায়িত করতে পারেন।
আপনি যদি:
IList<string> ColumnNames { get; set; }
//dict.key is column name, dict.value is value
Dictionary<string, string> Rows { get; set; }
আপনি উদাহরণস্বরূপ ব্যবহার করতে পারেন:
var descriptors= new List<PropertyDescriptor>();
//retrieve column name from preprepared list or retrieve from one of the items in dictionary
foreach(var columnName in ColumnNames)
descriptors.Add(new DynamicPropertyDescriptor<Dictionary, string>(ColumnName, x => x[columnName]))
MyItemsCollection = new DynamicDataGridSource(Rows, descriptors)
এবং আপনার গ্রিডটি মাই আইটেমস সংগ্রহের সাথে বাঁধার ব্যবহার করে সংশ্লিষ্ট কলামগুলির সাথে পপুলেশন হবে। এই কলামগুলি রানটাইম সময়ে গতিশীলভাবে সংশোধন করা যেতে পারে (নতুন যুক্ত বা বিদ্যমান সরানো) এবং গ্রিড স্বয়ংক্রিয়ভাবে এটির কলামগুলির সংগ্রহকে রিফ্রেশ করবে।
উপরে উল্লিখিত ডায়নামিকপ্রোপার্টিডিজিপেক্টর হ'ল নিয়মিত প্রোপার্টিডেস্কিটারে কেবলমাত্র একটি আপগ্রেড এবং কিছু অতিরিক্ত বিকল্পের সাথে দৃ strongly়ভাবে টাইপযুক্ত কলাম সংজ্ঞা সরবরাহ করে। ডায়নামিকডেটাগ্রিডসোর্স অন্যথায় বেসলিক সম্পত্তি-বিবরণীর সাথে সূক্ষ্ম ইভেন্টে কাজ করবে।