سؤال

أنا أستخدم السلوك المرفق المخصص للزر الافتراضي (كما هو محدد هنا: Silverlight 4 Default Button Service).

أنا قادر على ربط هذا بنجاح في XAML ، ولكن في عنصر تحكم المستخدم المتداخل ، في الكود وراء ما يلي لا يعمل:

public partial class MyNestedUserContol{

/// a DP for storing the name of the default button, used in the ElementName binding
public string DefaultButton {
    get { return (string)GetValue(DefaultButtonProperty); }
    set { SetValue(DefaultButtonProperty, value); }
}
public static readonly DependencyProperty DefaultButtonProperty =
    DependencyProperty.Register("DefaultButton", typeof(string), typeof(TeamReferenceFieldEditor), new PropertyMetadata(null));

...

private void CreateCustomControls(){
    ...
    TextBox tb = new TextBox();
    ...
    AddDefaultButtonBinding(tb);
    ...
}

private void AddDefaultButtonBinding(Control control) {
    Binding binding = new Binding();
    binding.ElementName = this.DefaultButton;
    control.SetBinding(DefaultButtonService.DefaultButtonProperty, binding); }

...
}

كيف يمكنني إنشاء الربط لهذا في الكود؟
شكرًا،
علامة

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

المحلول

في نهاية المطاف ستكون هذه مشكلة في أسماء الأسماء. ربما لا توجد القيمة المخصصة لـ ElementName في نفس الأسماء التي ينتمي إليها مربع النص.

هل فكرت ببساطة في استخدام:-

 private void MainPage_Load(object sender, RoutedEventArgs e)
 {
   LayoutRoot.AddHandler(UIElement.KeyUpEvent, LayoutRoot_KeyUp, true)
 }

 private void LayoutRoot_Keyup(object sender, KeyEventArgs e)
 {
   if (e.Key == Key.Enter)
   {
     // invoke default operation here
   }
 }

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

سيكون نمطًا أفضل لإرفاق خاصية على الزر والتي سيتم إعلانها الافتراضي (أو لإنشاء فئة فرعية من Button اتصل DefaultButton) وللتعاون مع محتوى USERCONTROL أو الصفحة أو RIDWINDOW لمراقبة مفتاح Enter. هذا لن يضطر بعد ذلك إلى إشراك عناصر تحكم أخرى لا تتعلق مباشرة بتوصيل هذه الوظيفة.

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