سؤال

الطريقة الشائعة التي واجهتها لتحديد محول القيمة للربط هو:
1. إنشاء مثيل لمحول القيمة كمورد مع مفتاح.
2. مرجع المثال باستخدام ملحق علامات staticresource:

<TextBlock Text="{Binding Converter={StaticResource myFormatter}" />  

س: هل هناك أي شيء خاطئ في استخدام مثيل ثابت كالآتي:

<TextBlock Text="{Binding Path=Description, Converter={x:Static local:MyFormatter.Instance}}"/>

// where Instance is declared as:
public readonly static MyFormatter Instance = new MyFormatter();

في حالتي محول القيمة غير قابلة للتغيير.

يحرر: هناك طريقة أخرى لتحويل المحول إلى ملحقبحيث تحدد المحول باستخدام تنسيق ملحق العلامات:

<TextBlock Text="{Binding Converter={local:MyFormatter}}"/>
هل كانت مفيدة؟

المحلول

من الناحية الفنية سيكون على ما يرام، ولكن في الممارسة العملية لا أحب ذلك:

  1. إذا قمت بإعلان المحول كمورد، فسيكون لديك نقطة مرجعية واحدة. إذا قمت بتغيير مساحة الاسم أو اسم الفئة للمحول، فستكون لديك مكان واحد فقط للتحديث.

  2. إذا كنت تعلن أنه ثابت، فأنت بحاجة إلى إحضار clr-namespace في أعلى كل ملف XAML يستخدم المحول. إذا كنت تعلن أنه مورد، فأنت لا تفعل ذلك.

  3. {Binding Converter={StaticResource myFormatter} هو أقصر بكثير وأسهل القراءة من واحد ثابت. على المدى الطويل، سوف يساعدك هذا أكثر مما قد تفكر فيه.

نصائح أخرى

طالما أن الهياكل ليس له دولة حقا، يجب أن يكون هذا جيدا. لا يعادل ما يعادلها. في الحالة الأولى، لديك مثيل للفئة لكل مثيل للتحكم القائم على XAML. في الثانية، سيتم إنشاء مثيل واحد فقط.

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