سؤال

لقد تعثرت مؤخرا عبر مشكلة حيث WPF ListView يبدو أن السيطرة تقيد القدرة على فرز عناصرها. على وجه التحديد، أواجه مشكلة كبيرة في محاولة للحصول على SortDescription للتعرف على خصائص متداخلة (خصائص الخصائص).

للفرز مباشرة إلى الأمام حسب الاقتراح، يجب على السطر التالي القيام بهذه المهمة:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
    ListSortDirection.Ascending));

وفي الواقع أنه يعمل بشكل جيد بالنسبة لي. ومع ذلك، لأن ItemSource لاجلي ListView هو (ثابت بشدة) DataTable, ، بعض الأعمدة مرتبطة خصائص متداخلة الصف (أي Row.OtherTableRow.SubProperty نمط مسار ملزم) - إنها طريقة عمل مصادر البيانات ADO.NET لقواعد بيانات التسلسل الهرمي.

ما أود القيام به هو شيء مثل هذا:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
    ListSortDirection.Ascending));

ولكن لسوء الحظ أن الخط يلقي ArgumentException:

لا يحتوي نوع "الطلبات" على صف خاص باسم "صف. [ID]، لذلك لا يمكن فرز مجموعة البيانات.

الغريب بما فيه الكفاية، ليس لدي مشكلة ملزمة خصائص متداخلة. في الواقع، تعرض الحقول جيدا بشكل جيد في ListView... ولا يضيف PropertyGroupDescription ل listView.GroupDescriptions أعطني أي مشاكل مع خصائص متداخلة - فهي فقط SortDescriptions!

هل هذا ولكن قيود WPF / ListView مراقبة؟ هل هناك أي طريقة سأحصل على الدعم كجزء من الإطار، أو سأكون محظوظا هناك؟ إذا كنت للأسف، فإن هذا التعارض لا مفر منه، وأود أن أقدر الكثير إذا كان يمكن لشخص ما أن يقترح الاختراق أو حلدا لهذا السيناريو الخاص بهذا الخصائص المتداخلة. لقد جربت بعض الأفكار بالفعل، ولكن كل ذلك مع الحد الأدنى من النجاح.

ملاحظة: أدرك أن الجماعة قد حل مشاكلي، لكنني أخشى أن هذا ليس من الممكن على الإطلاق للمشروع الحالي الذي أعمل عليه. سيكون لديك مجموعات بيانات ADO.NET بسيطة.

هل كانت مفيدة؟

المحلول

وفقا ل Windows Formation Foundation (ADAM NATHAN)، يمكنك إلقاء نظرة افتراضية على قائمة LetCollectionVill وتعيين تطبيق Icomparer مخصص إلى خاصية GoardOrt الخاصة به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top