مشاركة عبر


كيفية القيام بما يلي: التحكم عندما يحدث نص مربع النص المصدر

يصف هذا الموضوع كيفية استخدام الخاصية UpdateSourceTrigger للتحكم في توقيت تحديثات binding source . يستخدم الموضوع عنصر التحكم TextBox كلمثال.

مثال

الخاصيةTextBox لها قيمة افتراضية UpdateSourceTrigger من LostFocus . هذا يعني إذا كان للتطبيق TextBox مع خاصية ربط البيانات TextBox.Text، النص الذي تكتبه فيTextBox لا يقوم بتحديث المصدر حتى يفقد TextBox التركيز (على سبيل المثال، عند النقر بعيداً عن TextBox).

إذا كنت تريد أن يتم تحديث المصدر بينما تقوم بالكتابة قم بتعيين تعيين UpdateSourceTrigger الخاصة بالربط الى PropertyChanged. في المثال التالي الخصائص Text الخاصة بكل من TextBox و TextBlock تكزن مرتبطة بنفس خاصية المصدر. يتم تعيين خاصية UpdateSourceTrigger الخاصة بالربط TextBox الى PropertyChanged.

<Label>Enter a Name:</Label>
<TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>

<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

كنتيجة ، يقوم TextBlock بإظهار نفس النص (لأن المصدر يتغير) عند قيام المستخدم بادخال النص الى TextBox ، كما هو موضح بواسطة اللقطة التالية للنموذج:

لقطة شاشة لعينة الربط البسيط للبيانات

إذا كان لديك مربع حوار أو نموذج قابل للتحرير من قبل المستخدم وكنت ترغب فى تأجيل تحديثات المصدر حتى انتهاء المستخدم من تحرير الحقول والنقر فوق "موافق" ، يمكنك تعيين القيمة UpdateSourceTrigger الخاصة بك الى Explicit كما في المثال التالي:

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

عند تعيين القيمة UpdateSourceTrigger الى Explicit ، تتغير قيمة مصدر فقط عند يقوم التطبيق باستدعاء الأسلوبUpdateSource. يظهر المثال التالي كيفية استدعاء UpdateSource لـ itemNameTextBox:

Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
ملاحظةملاحظة

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

ملاحظةملاحظة

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

راجع أيضًا:

موارد أخرى

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