سؤال

أريد أن أكون قادرا على اجتياز شجرة Visual UI التي تبحث عن عنصر مع معرف مرتبط بخاصية علامة العنصر المرئي.

أنا أتساءل كيف أفعل هذا. الضوابط لا تملك أطفالا لاجتياز.

لقد بدأت في استخدام Logicaltreehelper.getChildren، والتي يبدو أنها تعمل على النحو المقصود، حتى أصابت تحكم Treeview ... ثم Logicaltreehelper.getChildren لا يقوم بإرجاع أي أطفال.

ملاحظة: الغرض هو العثور على عنصر واجهة المستخدم المرئي الذي يتوافق مع عنصر البيانات. وهذا هو، بالنظر إلى معرف لهذا البند، انتقل إلى العثور على عنصر واجهة المستخدم المعروض عليه.

تحرير: أنا على ما يبدو لا أشرح هذا جيدا بما فيه الكفاية. أنا ملزمة بعض كائنات البيانات إلى عنصر تحكم TreeView ثم الرغبة في تحديد عنصر معين برصليا معرف كائن الأعمال. لا أرى لماذا من الصعب جدا ترتيب الشجرة المرئية والعثور على العنصر الذي أريده، حيث أن معرف كائن البيانات في خاصية علامة العنصر المرئي المناسب. أنا أستخدم الخلد وأنا قادر على العثور على عنصر واجهة المستخدم مع المعرف المناسب في علامة عليه. لا يمكنني العثور على العنصر المرئي في التعليمات البرمجية. LogicaltreeHelper لا يعبر أي عناصر في الشجرة. لا itemcontainergenerator.containerfromitem استرجع أي شيء للعناصر في عرض الشجرة.

لا يوجد حل صحيح

نصائح أخرى

نلقي نظرة عينة. وبعد لقد وجدت هذه العينة مكتوبة بشكل جيد للغاية وأعتقد أن استخدام عرض النموذج سوف يحل مشكلتك.

يحرر: وفيما يتعلق بالبحث عن الشجرة البصرية. تحتوي كل من TreeView و TreeViewitem على خصائص العناصر التي يمكنك اجتيازها والبحث عن معرفك. لا يمكنك استخدامه؟

المشكلة هي أن فقط TreeViewItems تم إنشاء مرئي - لم يتم إنشاء WPF جميع العناصر مقدما (نظرا لطول الوقت الذي يمكن أن يأخذه لأشجار كبيرة، وأود أن أتصور).

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

تحرير: بناء على تعديل الخاص بك، فإن ذلك سيعمل فقط في حالة إنشاء عنصر واجهة المستخدم لهذا الكائن، وهو غير مضمون. نلقي نظرة على iitemcontainergenerator. واجهة (استرجاع عن طريق الاتصال itemscontrol.itemcontainergenerator.. وبعد أعتقد أن لديه طريقة تعود حاوية UI (أي TreeViewItem) لكائن بيانات معين. هذا سوف يعمل فقط إذا تم إنشاء حاوية UI من قبل.

Logicaltreehelper.getChildren يبحث في خاصية Logicalchildren's Control، وهو ما هو افتراضي افتراضي ل TreeView (مشتق من فئة OblesControl). قد تضطر إلى فحص نوع الكائنات التي تم إرجاعها بواسطة Getchildren وعندما تأتي إلى كائن TreeView، ثم قم ببعض منطق معالجة خاص.

من المحتمل أن يكون هذا المنطق الخاص هو التكرار على عناصر الشجرة ومحاولة إلقاءهم على إطار friverelement (الطبقة الأساسية التي تحدد ملكية العلامة).

لقد قمت بأشياء مماثلة من خلال تكرار الشجرة المرئية باستخدام VisualTreeHelper. الدفع هذه المدونة post. كتبه جيم بلتزل - غوتييه - إنه يوفر بعض الأساليب المساعدة للمشي الأشجار البصرية وإرجاع عنصر حسب الاسم والنوع، وهذا يشبه الكود الذي أستخدمه في مشروعي الحالي. يمكنك تعديل هذه الوظائف لجعلها تحقق من قيم العلامات بدلا من الاسم أو بالإضافة إلى الاسم.

شيء واحد يجب أن يدركه مع الشجرة المرئية هو أنه ليس هناك ما لم يتم تحميل الصور - قد تحتاج إلى إرفاق مفوض إلى الحدث "المحمل" لعنصرك المرئي إذا لم يتم تقديم المرئي حتى الآن النقطة التي تتصل بها الرمز.

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