سؤال

لدي WPF ComboBox داخل قالب بيانات (الكثير من مربعات التحرير والسرد في مربع القائمة) وأريد التعامل مع زر الإدخال.سيكون الأمر سهلاً لو كان على سبيل المثال.زر - سأستخدم مسار الربط Command + Relative وما إلى ذلك.لسوء الحظ، ليس لدي أي فكرة عن كيفية التعامل مع الضغط على المفتاح باستخدام أمر أو كيفية تعيين معالج الأحداث من القالب.أي اقتراحات؟

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

المحلول 2

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

محدث

هنا هو الحل الخاص بي:

أبحث في الشجرة المرئية عن زر ثم أقوم بتنفيذ الأمر المرتبط بالزر.

عرض.xaml:

<ComboBox KeyDown="ComboBox_KeyDown"/>
<Button Command="{Binding AddResourceCommand}"/>

عرض.xaml.cs:

private void ComboBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        var parent = VisualTreeHelper.GetParent((DependencyObject)sender);
        int childrenCount = VisualTreeHelper.GetChildrenCount(parent);

        for (int i = 0; i < childrenCount; i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i) as Button;
            if (null != child)
            {
                child.Command.Execute(null);
            }
        }
    }
} 

نصائح أخرى

ويمكنك استخدام EventSetter في النمط الذي يتم وضع القالب مع:

<Style TargetType="{x:Type ListBoxItem}">
      <EventSetter Event="MouseWheel" Handler="GroupListBox_MouseWheel" />
      <Setter Property="Template" ... />
</Style>

وهذه المادة لديه وسيلة لتوجيه أي Event إلى Command

http://nerobrain.blogspot.nl/2012/ 01 / برنامج الأغذية العالمي-الأحداث إلى command.html

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