سؤال

لقد كنت أحاول التعامل مع حدث Keydown ل UserControl (صفحة) في تطبيق Silverlight، ولكن يبدو أن هناك بعض السلوك الغريب من جانب وظيفة إدخال المستخدم Silverlight. لا يتم الحصول على الحدث تحت أي ظرف من الظروف. لقد حاولت إرفاق معالج الأحداث إلى كل عنصر تحكم حاوية داخل UserControl، ولكن لا يزال بدون حظ. في الواقع، فإن نظام Silverlight Direction "Event Routing" هو رواية تماما ويبدو أمرا غريبا إلى حد ما، لذلك ربما يكون مجرد سوء فهم من جانبي، على الرغم من أنني قد جاهل أكثر من كيفية المتابعة.

التعليمة البرمجية التالية عبارة عن قالب من الصفحة المعينة التي أختبرها.

<UserControl x:Class="MyNamespace.CreditsPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             KeyDown="UserControl_KeyDown">
    <Grid x:Name="LayoutRoot">
        <Border>
            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
                <TextBlock TextAlignment="Center">
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                </TextBlock>
            </StackPanel>
        </Border>
    </Grid>
</UserControl>

في WPF، سيكون الحل الواضح لمثل هذه المشكلة هو التعامل مع حدث PreviewKeydown، ولكن لسوء الحظ، هذا غير متوفر في Silverlight 2. وسوف تكون هناك أي أفكار موضع ترحيب (وشرح قصير للسبب في تدوين فضيح الحدث يتصرف كما هو).

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

المحلول

يمكنك إدارة مدخلات المستخدم من Uielement الرئيسية: Application.Current.rootviau

Application.Current.RootVisual.KeyDown += Application_KeyDown

ثم يمكنك التعامل مع طريقة Application_KeyDown جميع مدخلات المستخدم من لوحة المفاتيح.

يمكنك أيضا إلقاء نظرة على هذه المشكلة: التعامل مع حدث Keydown في قماش

نصائح أخرى

حاولت XAML التي قدمتها ولم تواجه مشكلة في تسليم حدث Keydown.

هناك شيء واحد يمكن أن يسببه: سوف يرى البرنامج المساعد Silverlight فقط أحداث الإدخال إذا كان يركز. لذا حاول وانقر على محتوى Silverlight في المتصفح لإعطاء تركيز الإدخال قبل الضغط على المفاتيح.

اسمحوا لي أن أعرف إذا كان هذا يحل مشكلتك أم لا.

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