في WPF ، كيف يمكنني تبرر عناصر القائمة مع الحفاظ على اختصارات لوحة المفاتيح؟

StackOverflow https://stackoverflow.com/questions/3899302

سؤال

لقد قمت مؤخرًا بتغيير XAML الخاص بي من أجل الحصول على القدرة على عناصر القائمة اليمنى مثل إعداد أحجام الخطوط في الرسم أدناه:

File  Configure  Help
      +-------------+  +----+
      | Font size > |->|  8 |
      | Speed     > |  | 10 |
      +-------------+  | 12 |
                       +----+

من الواضح ، استنادًا إلى هذا الرسم ، لن أتحرك من دور فني إلى تصميم جرافيك في أي وقت قريب :-) إنه مجرد توضيح ما قصدته.

XAML الأصلي أدناه لم يقم بتعديل القيم

<MenuItem Header="_Configure">
    <MenuItem Header="_Font size   ">
        <MenuItem Header="_8" Click="menuConfigFontSz8" />
        <MenuItem Header="1_0" Click="menuConfigFontSz10" />
        <MenuItem Header="1_2" Click="menuConfigFontSz12" />
    </MenuItem>
    :
</MenuItem>

بدلاً من ذلك ، أعطاني:

File  Configure  Help
      +-------------+  +----+
      | Font size > |->| 8  |
      | Speed     > |  | 10 |
      +-------------+  | 12 |
                       +----+

لذا ، للحصول على عدل صحيح ، قمت بتغييره إلى:

<MenuItem Header="_Configure">
    <MenuItem Header="_Font size   ">
        <MenuItem Click="menuConfigFontSz8">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">_8</TextBlock>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Click="menuConfigFontSz10">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">1_0</TextBlock>
            </MenuItem.Header>
        </MenuItem>
        <MenuItem Click="menuConfigFontSz12">
            <MenuItem.Header>
                <TextBlock HorizontalAlignment="Right">1_2</TextBlock>
            </MenuItem.Header>
        </MenuItem>
    </MenuItem>
    :
</MenuItem>

ومع ذلك ، أجد أنني فقدت قدرة الاختصار على القيام بها البديلج, F, 0 لاختيار حجم الخط 10 (إنه فقط 0 الشيء الذي لم يعد يعمل ، لا يزال الأولين بتات على ما يرام).

بدلاً من ذلك يعطيني النص الحرفي 1_0 في القائمة نفسها بدلاً من السماح لي بالاستخدام 0 كطريقة سريعة لاختيار العنصر:

File  Configure  Help
      +-------------+  +-----+
      | Font size > |->|  _8 |
      | Speed     > |  | 1_0 |
      +-------------+  | 1_2 |
                       +-----+

كيف يمكنني الحفاظ على التبرير الصحيح لنص القائمة ولكن لا يزال يسمح بمسرع؟

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

المحلول

عندما تضيف مسرعًا إلى Menuitem (وزر) WPF يضيف تلقائيًا Textblock إلى Menuitem الخاص بك ، وربما يمنع هذا الكود من العمل. يمكنك رؤية هذا التأثير إذا ألقيت نظرة على إجابه الى هذا سؤال.

يحل هذا الرمز المشكلة إذا لم يكن لديك نمط مستنير عام في مواردك يتجاوز سلوك TextBlock الافتراضي.

<MenuItem Header="_Configure"> 
  <MenuItem Header="_Font size"> 
    <MenuItem Click="menuConfigFontSz8" Header="_8" HorizontalAlignment="Right"/>
    <MenuItem Click="menuConfigFontSz10" Header="1_0" HorizontalAlignment="Right"/>
    <MenuItem Click="menuConfigFontSz12" Header="1_2" HorizontalAlignment="Right"/>
</MenuItem> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top