نظرة عامة حول تعريفات الربط

يناقش هذا الموضوع طرق مختلفة لإمكانية تعريف ربط.

يشتمل هذا الموضوع على الأقسام التالية.

  • المتطلبات الأساسية
  • تصريح ربط في XAML
  • إنشاء ربط في التعليمات البرمجية
  • بناء جملة مسار الربط
  • السلوكيات الإفتراضية
  • موضوعات ذات صلة

المتطلبات الأساسية

قبل قراءة هذا الموضوع, فإنه من المهم أن يكون المفهوم واستخدام ملحقات العلامات مألوف. و لمزيد من المعلومات حول أساليب العلامات الموسعة ، راجع ملحقات ترميز و XAML WPF.

لا يغطي هذا الموضوع مفاهيم ربط البيانات. للحصول على مناقشة لمفاهيم ربط البيانات, راجع نظرة عامة لربط البيانات.

تصريح ربط في XAML

يناقش هذا القسم كيفية تصريح ربط في XAML.

استخدام ملحق العلامات

Binding هو علامات الملحق. عند استخدام ملحق التوثيق لتصريح ربط التعريف, التصريح يتكون من سلسلة من العبارات التالية Binding الكلمة الأساسية و مفصولة بفواصل (,). العبارات في تصريح الربط يمكن أن يكون في أي ترتيب و له العديد من التركيبات الممكنة. العبارات هي الاسم= القيمة أزواج حيث يكون الاسم هو اسم Binding خاصية و القيمة هي القيمة التي يتم إعدادها للخاصية.

عند إنشاء سلاسل تعريف الربط في العلامات, يجب أن تكون مرفقة إلى خاصية تبعية معينة لكائن الهدف. يظهر المثال التالي كيفية ربط TextBox.Text خاصية باستخدام ملحق التوثيق, يحدد Source و Path خصائص.

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

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

بناء عنصر كائن

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

التالي مثال لكلا من الكائن و بناء الجملة مع استخدام ملحق العلامات:

<TextBlock Name="myconvertedtext"
  Foreground="{Binding Path=TheDate,
                       Converter={StaticResource MyConverterReference}}">
  <TextBlock.Text>
    <Binding Path="TheDate"
             Converter="{StaticResource MyConverterReference}"/>
  </TextBlock.Text>
</TextBlock>

يربط المثال خاصية Foreground بواسطة تصريح ربط باستخدام بناء جملة الملحق. تعريف الربط لخاصية Text يستخدم كائن عنصر بناء الجملة.

لمزيد من المعلومات حول مصطلحات مختلفة, راجع بناء جملة XAML بالتفاصيل.

multiBinding و PriorityBinding

MultiBinding وPriorityBinding لا يدعم بناء جملة ملحق XAML. لذلك، يجب استخدام عنصر الكائن إذا تم تصريح MultiBinding أو PriorityBinding في XAML.

إنشاء ربط في التعليمات البرمجية

هناك طريقة أخرى لتحديد توثيق بتعيين الخصائص مباشرةً على Binding الكائن في التعليمات البرمجية. يوضح المثال التالي كيفية إنشاء Binding الكائن وتحديد "الخصائص" في التعليمات البرمجية:

    Private Sub OnPageLoaded(ByVal sender As Object, ByVal e As EventArgs)
        ' Make a new source, to grab a new timestamp
        Dim myChangedData As New MyData()

        ' Create a new binding
    ' TheDate is a property of type DateTime on MyData class
        Dim myNewBindDef As New Binding("TheDate")

        myNewBindDef.Mode = BindingMode.OneWay
        myNewBindDef.Source = myChangedData
        myNewBindDef.Converter = TheConverter
        myNewBindDef.ConverterCulture = New CultureInfo("en-US")

    ' myDatetext is a TextBlock object that is the binding target object
        BindingOperations.SetBinding(myDateText, TextBlock.TextProperty, myNewBindDef)
        BindingOperations.SetBinding(myDateText, TextBlock.ForegroundProperty, myNewBindDef)



...


    End Sub
    private void OnPageLoaded(object sender, EventArgs e)
    {
        // Make a new source, to grab a new timestamp
        MyData myChangedData = new MyData();

        // Create a new binding
    // TheDate is a property of type DateTime on MyData class
        Binding myNewBindDef = new Binding("TheDate");

        myNewBindDef.Mode = BindingMode.OneWay;
        myNewBindDef.Source = myChangedData;
        myNewBindDef.Converter = TheConverter;
        myNewBindDef.ConverterCulture = new CultureInfo("en-US");

    // myDatetext is a TextBlock object that is the binding target object
        BindingOperations.SetBinding(myDateText, TextBlock.TextProperty, myNewBindDef);
        BindingOperations.SetBinding(myDateText, TextBlock.ForegroundProperty, myNewBindDef);



...


}

في حالة الكائن الذي يتم ربطه أن يكون FrameworkElement أو FrameworkContentElement يمكنك استدعاء SetBinding الأسلوب على الكائن مباشرة بدلاً من استخدام BindingOperations.SetBinding. على سبيل المثال ، راجع كيفية القيام بما يلي: إنشاء ربط في التعليمات البرمجية.

بناء جملة مسار الربط

استخدم خاصية Path لتحديد قيمة المصدر الذي تريد ربطها إلى:

  • في أبسط حالة Path قيمة الخاصية هي اسم خاصية كائن المصدر المستخدم للربط, مثل Path=PropertyName.

  • الخصائص الفرعية من خاصية يمكن أن يتم تعيينها بواسطة بناء جملة مماثل كما في #C. على سبيل المثال، جملة Path=ShoppingCart.Order تعين الربط إلى الخاصية الفرعية Order للكائن أو الخاصية ShoppingCart.

  • لربط خاصية مرفقة ، ضع أقواس حول خاصية مرفقة . على سبيل المثال، لربط خاصية مرفقة DockPanel.Dock, بناء الجملة هو Path=(DockPanel.Dock).

  • مفهرسات خاصية يمكن تحديدها داخل أقواس مربعة تلي اسم الخاصية حيث يتم تطبيق المفهرس. على سبيل المثال، جملة Path=ShoppingCart[0] تعين الربط بالفهرس الذي يتوافق مع كيفية معالجة الفهرسة الداخلية الخاصة للسلسلة الحرفية "0". يتم أيضاً دعم المفهرسات المتداخلة.

  • يمكن خلط المفهرسات و الخصائص الفرعية في Path جملة; على سبيل المثال،Path=ShoppingCart.ShippingInfo[MailingAddress,Street].

  • داخل المفهرسات يمكن أن يكون لديك معلمات مفهرس متعددة مفصولة بفواصل (,). يمكن تحديد النوع لكل معلمة بالأقواس. على سبيل المثال، يمكن أن يكون لديك Path="[(sys:Int32)42,(sys:Int32)24]" ، حيث sys تم تعيينها إلى System مساحة الاسم.

  • عندما يكون "المصدر" طريقة عرض مجموعة ، يمكن تحديد العنصر الحالي بخط مائل (/). على سبيل المثال، جملة Path=/ تعين الربط إلى العنصر الحالي في طريقة العرض. عندما يكون المصدر مجموعة ، يعين بناء الجملة التالي العنصر الحالي من طريقة عرض المجموعة الافتراضية.

  • يمكن ضم المائلة وأسماء الخصائص باجتياز الخصائص التي هي مجموعات. على سبيل المثال، Path=/Offices/ManagerName تعيّن العنصر الحالي لمجموعة المصدر الذي يحتوي على Offices الخاصية أيضاً مجموعة. العنصر الحالي هو عبارة عن كائن يحتوي على ManagerName الخاصية.

  • بشكل اختياري، يمكن أن يتم استخدام مسار نقطة (.) للربط إلى المصدر الحالي. على سبيل المثال، Text="{Binding}" يكافئ Text="{Binding Path=.}".

آلية الهروب

  • مفهرسات الداخل ([]) أو حرف الإقحام (^) تهرب من الحرف التالي.

  • إذا قمت بتعيين Path في XAML ، أنت بحاجة أيضاً لتهريب (باستخدام الوحدات XML) أحرف معينة موجودة خاصة لتعريف لغة XML:

    • استخدم &amp; لتهريب الحرف "&".

    • استخدم &gt; لتهريب علامة النهاية ">".

  • بالإضافة إلى ذلك، إذا تصف الربط بأكمله في سمة باستخدام بناء جملة ملحق العلامات, تحتاج إلى تهريب (باستخدام الخط المائل العكسي \) التي هي أحرف خاصة WPF محلل ملحق العلامات:

    • خط مائل عكسي (\) هو حرف الهروب نفسه.

    • تفصل علامة المساواة (=) اسم الخاصية من قيمة الخاصية.

    • تفصل الفاصلة (،) الخصائص.

    • الأقواس المتعرجة اليمنى (}) هي نهاية ملحق العلامات.

السلوكيات الإفتراضية

السلوك الافتراضي كما يلي لا يتم تحديده في التصريح.

  • يتم إنشاء محول افتراضي يحاول تحويل نوع القيمة ين مصدر الربط القيمة و هدف الربط. إذا لا يمكن إجراء تحويل, المحول الافتراضي يقوم بإرجاع null.

  • إذا لم تعيّن ConverterCulture ، يستخدم محرك الربط Language خاصية من كائن هدف الربط . في XAML ، هذا يفترض "en - US" أو يرث القيمة من عنصر الجذر (أو أي عنصر) من الصفحة، إذا كان تم تعيين أحد بشكل صريح.

  • طالما الربط بالفعل له سياق بيانات (على سبيل المثال، سياق البيانات الموروثة القادمة من عنصر أصل) ، مهما كان العنصر أو المجموعة التي يتم إرجاعها بواسطة هذا السياق الذي يناسب الربط دون الحاجة للمزيد من تعديل المسار ، تعريف ربط يمكن ألا يكون له جمل على الإطلاق: {Binding} غالباً هذه هي الطريقة لتحديد ربط لتنسيق البيانات, حيث يعمل الربط عند التجميع. لمزيد من المعلومات، راجع مقطع "الكائنات بأكملها المستخدمة كمصدر ربط " في نظرة عامة حول مصادر الربط.

  • الافتراضي Mode تختلف بين أحادية الإتجاه و ثنائية الاتجاه استناداً على خاصية التبعية المنضمة. يمكنك تعريف وضع الربط دوماً بشكل صريح للتأكد من السلوك المطلوب للربط الخاص بك. عامة, خصائص عناصر التحكم القابلة للتحرير من قبل المستخدم, مثل TextBox.Text و RangeBase.Value ، الافتراضي بروابط ثنائية الاتجاه بينما معظم الخصائص الافتراضية بروابط أحادية الاتجاه.

  • الافتراضي UpdateSourceTrigger تختلف قيمة بين PropertyChanged و LostFocus استناداً إلى خاصية التبعية المضمنة أيضاً. القيمة الافتراضية لـ معظم خصائص التبعية PropertyChanged ، أثناء TextBox.Text خاصية لـها قيمة افتراضية من LostFocus.

راجع أيضًا:

المرجع

بناء مسار جملة XAML

المبادئ

نظرة عامة لربط البيانات

أمثلية الأداء: ربط البيانات.

موارد أخرى

المواضيع الإجرائية لربط البيانات