IListSource وToString() مع DataSource
-
05-07-2019 - |
سؤال
أولاً لدي Listbox وقمت بتعيين DataSource على MyObjectCollection
يقوم MyObjectCollection بتنفيذ واجهة IListSource التي تحتوي على MyObject
MyObject لديه الطريقة
public override string ToString()
{
return "test";
}
يعرض مربع القائمة الآن "اختبار" لكل عنصر في MyObjectCollection.
ولكن إذا قمت بتطبيق واجهة IListSource على MyObject أيضًا.يعرض مربع القائمة سلسلة فارغة.كيفية إصلاح ذلك في فئة "MyObject".الحل البديل هو إصلاحه في حدث تنسيق Listbox، ولكن يجب على كل عنصر من عناصر واجهة المستخدم الرسومية تنفيذ هذا الحل البديل :/
المحلول
عموما، ينبغي للأمور أيضاً تكون قوائم، أو ينبغي أن يكون كيانا للربط.إذا كانت قائمة (IList
أو IListSource
) فإن الكثير من واجهات برمجة التطبيقات (API) المرتبطة بالبيانات ستفترض أنك تريد ذلك بالفعل (بالنسبة لسيناريوهات الربط البسيط، على سبيل المثال:صف واحد) أولاً عنصر من القائمة الفرعية.
أود ببساطة تغييره بحيث MyObject
لا ينفذ IListSource
, ، لكن يغلف ذلك، وربما تعريضه عبر أ Items
ملكية.يمكنك أيضًا الاطلاع على ما إذا كان العرف TypeConverter
ستعمل (سأقوم بالتحقيق ...)