سؤال

لدي عنصري تحكم مخصصان يشبهان العقدة وعنصر التحكم الذي يرسم الروابط بين العقد.

أرغب في كتابة كلا عنصري التحكم بأكبر قدر ممكن في xaml.يقوم الرابط بتخزين كلا العقدتين كخصائص تبعية، وأنا أستخدم ربط البيانات لتحريك الخط بين العقد كلما تحركت العقد.

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

أي شخص لديه أي أفكار؟

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

المحلول

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

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

<محول متعدد الربط = "{محول StaticResource}">
<Binding Path="Node1" RelativeSource|المصدر.../>
<مسار الربط = "Node2" .../>
</الربط المتعدد>

  1. قم بتطبيق واجهة IMultiValueConverter، والتي ستقوم بشكل أساسي بحساب الشكل الذي يجب أن تبدو عليه السكتة الدماغية بناءً على المسافة بين العقد.

  2. في xaml، قم بإنشاء مثيل للمحول الخاص بك، وأضفه إلى خاصية محول الربط المتعدد الخاص بك.

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

بشكل عام، عندما يتعين عليك تعيين قيم خصائص متعددة لخاصية أخرى، سيتعين عليك استخدام الربط المتعدد والمحول.

نصائح أخرى

يمكنك تحديد خاصية StrokeWidth في فئة الارتباط الخاصة بك والتي يتم حسابها في كل مرة تتحرك فيها العقد ثم ربط خاصية النمط المناسبة بها.

أفترض أنه يمكنك أيضًا محاولة القيام بشيء ما باستخدام DataTriggers، ولكنها تحتاج إلى قيم محددة للعمل معها - لا يمكنك استخدام أي نوع من التعبيرات.وهذا من شأنه أن يجعل من الصعب الحصول على نطاق الحل جيدًا لمجموعة واسعة من المسافات بين العقد.

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