كيف يمكنني التعامل مع/تحرير كمية كبيرة من النص في WPF؟

StackOverflow https://stackoverflow.com/questions/807347

  •  03-07-2019
  •  | 
  •  

سؤال

ما هو الأسلوب الجيد لعرض وتحرير كمية كبيرة من النص غير المنسق (تمامًا كما تفعل المفكرة) باستخدام WPF؟يؤدي تحميل سلسلة كبيرة في TextBox إلى جعل واجهة المستخدم غير مستجيبة.لا يمكن مقارنة الأداء الإجمالي تقريبًا مع عناصر تحكم TextBox الخاصة بإطارات عمل Microsoft UI السابقة.

ما هي الخيارات المتاحة لي لحل هذه المشكلة.لا أريد حظر مؤشر ترابط واجهة المستخدم أثناء قيام عنصر التحكم بالنص بتحميل النص.قد أحتاج أيضًا إلى نوع من "المحاكاة الافتراضية" لأنه قد لا يكون من الجيد تحميل النص بالكامل في عنصر التحكم (أعتقد أن 20 ميجا بايت من النص ستنشئ الكثير من الحروف الرسومية حتى لو لم تكن مرئية).يبدو أن TextBox لم يعد يحتوي على طريقة AppenText() بعد الآن، لذا ليس لدي حتى طريقة للتحكم في التحميل غير المتزامن للنص.

أليست هذه مشكلة شائعة؟يبدو أن WPF لا يقدم أي شيء لهذا خارج الصندوق.لماذا هو كذلك؟

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

المحلول

وقد كتب

وAvalonEdit، محرر النصوص في شارب ديفيلوب، تماما من الصفر في برنامج الأغذية العالمي والأمثل لكميات كبيرة من النص. فإنه لا يعتمد النص الغني (على الرغم من أنها لا تؤيد تسليط الضوء على تركيب وغيرها من الميزات الرائعة مثل للطي). وأعتقد أن هذا قد تناسب مشروع القانون الخاص بك تماما.

وهنا مقال عن تحرير كتابي من قبل المطور:

http://www.codeproject.com/KB/edit/AvalonEdit.aspx

نصائح أخرى

لست متأكدا إذا كان هذا يساعد، ولكن هل حاولت استخدامه FlowDocumentPageViewer و قارئ FlowDocument?

كما أنه يتمتع بدعم جيد جدًا للتعليقات التوضيحية ويبدو مثاليًا لتحميل المستندات بتنسيق نصي.

والمشكلة هي أن مربع نص هو عنصر حاوية واحدة. الضوابط القائمة، مثل المحاكاة الافتراضية مربع القائمة بشكل جيد للغاية بسبب إعادة تدوير الحاويات. ليس هناك حقا أي شيء بسيط هو أن يمكنك القيام به لتسريع مربع نص.

ولكن عنصر تحكم مربع نص لديها وسيلة AppendText ():

        TextBox tb = new TextBox();
        tb.AppendText("Hello");

ولذا نعم، يمكنك استخدام هذا بشكل دينامي إضافة بعض النصوص مثلما ذكرتم.

ويمكنك فقط استخدام النص مع النمط الذي يتيح للمستخدم مساحة أكبر لعرض النص. هناك ضوابط ربما أكثر تقدما من Telerik وغيرها ولكن إذا كنت لا تحتاج إلى خيارات التحرير التي ينبغي أن يكون كافيا.

هل يمكن دائما خلط والتكنولوجيات المباراة: هل يمكن إسقاط مربع نص WinForms عناصر على أحد الوالدين WPF. تفقد أشياء مثل التصميم، والتعتيم، والرسوم المتحركة، التحويلات وغيرها، ولكن إذا كان كل ما يهم هو النص التحرير، مربع نص WinForms عناصر يفعل ذلك على ما يرام.

وماذا عن محاولة شيء من هذا القبيل:

والحفاظ على سلسلة كاملة في الذاكرة ولكن تظهر فقط على "شريحة" منه في مربع النص. حجم هذه السلسلة شرائح ستحسب حيوي اعتمادا على حجم النص، حجم الخط الخ.

وبالطبع هذا ينطوي على الكثير من التعليمات البرمجية يست تافهة لمناسبة عرض، مزامنة وهلم جرا، ولكن يبدو وسيلة للذهاب.

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