سؤال

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

<TextBox Text="{Binding Path=TextProperty, UpdateSourceTrigger=PropertyChanged}"/>

في Window Phone UpdateSourceTrigger لم يتم تضمينه في مواصفات XAML ولتحقيق ذلك، كان من الضروري وجود معالج TextChanged على النحو التالي:

(sender as TextBox).GetBindingExpression(TextBox.TextProperty).UpdateSource();

في نظام التشغيل Windows 8، افترضت أنه سيتم حذف UpdateSourceTrigger أيضًا - وكنت على صواب.لكنني فوجئت عندما علمت أن GetBindingExpression() مفقود أيضًا.

ما هي أفضل تقنية لإنجاز ما أنجزناه في Windows 8 في WPF باستخدام UpdateSourceTrigger وفي Windows Phone باستخدام GetBindingExpression().UpdateSource()؟

يرجى الملاحظة:هذا السؤال مخصص لتطوير Windows 8 (Metro)؛هذا السؤال الآخر ( "UpdateSourceTrigger=PropertyChanged" يعادل Windows Phone 7 TextBox ) مخصص لتطوير Windows Phone - ولا ينبغي الخلط بينه.

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

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

المحلول

يبدو أنه لا يوجد GetBindingExpression أو الحل البديل المعادل.ومع ذلك، يمكنك توسيع TextBox مثل هذا: https://mytoolkit.svn.codeplex.com/svn/WinRT/Controls/ExtenedTextBox.cs

وما زال هذا لا يحل المشكلة في حد ذاتها..(انه من المحزن حقا)

أنظر أيضا:

نصائح أخرى

يبدو UpdateSourceTrigger و GetBindingExpression متوفرة في نظام التشغيل Windows 8.1.شكرًا لريكو سوتر أعلاه وإنتاج HDW من هذا السؤال:

Windows Store TextBox - كيفية تحديث الارتباط عند إدخال المفتاح؟

جيري،

النمط الذي يجب أن تستخدمه سيتم تنفيذ inotifypropertychanged. هيريس ومثال من MSDN: http://msdn.microsoft.com/en-us/ library/ms229614.aspx

بهذه الطريقة، سيتم إخطار أي كائن XAML الذي يرتبط بممتلكات أو حقل بدعم، عند تغيير قيمة حقل الدعم، بسبب المكالمة إلى طريقة NotifyPropertychanged ().

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

للفصول التي تنفذ inotifypropertychanged

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

giveacodicetagpre.

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