رسالة الخطأ المحددة، "هذا النوع CollectionView لا يدعم التغييرات التي تم إجراؤها على SourceCollection الخاص به من مؤشر ترابط مختلف عن مؤشر ترابط المرسل،" يشير إلى محاولة تعديل ObservableCollection من مؤشر ترابط غير واجهة المستخدم.
كما هو موضح في التعليمات البرمجية المقدمة، تحميل ViewModel ( ) يقوم الأسلوب بتعبئة ObservableCollection _matchObsCollection من قائمة كائنات GetMatchDetailsDC. ومع ذلك، يتم إجراء هذا التحديث خارج مؤشر ترابط واجهة المستخدم.
في WPF، يتم إنشاء عناصر واجهة المستخدم، مثل DataGrid، على مؤشر ترابط واجهة المستخدم والحفاظ على تقارب الخيط. يجب إجراء أي تعديلات على هذه العناصر من مؤشر ترابط واجهة المستخدم لضمان سلامة مؤشر الترابط.
لحل هذه المشكلة، يمكنك استخدام App.Current.Dispatcher.Invoc(( Action)delegate { ... }) لاستدعاء تحديث المجموعة في مؤشر ترابط واجهة المستخدم:
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate // تحميل البيانات غير المتزامن في WPFعلى الرغم من أن استخدام الطرق غير المتزامنة لتحميل البيانات أمر شائع، فمن المهم مراعاة سلامة سلسلة الرسائل عند معالجة عناصر واجهة المستخدم من سلاسل رسائل غير تابعة لواجهة المستخدم. تأكد دائمًا من إجراء أي تحديثات لعناصر واجهة المستخدم، مثل تعديل ObservableCollection، على مؤشر ترابط واجهة المستخدم لتجنب الأخطاء المتعلقة بمؤشر الترابط.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3