نظرة عامة للقائمة

الفئة Menu تمكّنك من تنظيم العناصر المقترنة بالأوامر ومعالجات الأحداث في الترتيب الهرمي. كل عنصرMenu يحتوي على مجموعة من عناصر MenuItem .

يشتمل هذا الموضوع على الأقسام التالية.

  • قائمة التحكم
  • إنشاء القوائم
  • MenuItem لها اختصارات لوحة المفاتيح
  • تصميم القائمة
  • موضوعات ذات صلة

قائمة التحكم

عنصر التحكمMenu يقدم قائمة العناصر التي تحدد أوامر أو الخيارات الخاصة بالتطبيقات. بشكل عام، النقر فوق MenuItem يفتح قائمة فرعية أو يؤدي إلى أن التطبيق يقوم بتنفيذ أمر.

إنشاء القوائم

يقوم المثال التالي بإنشاء Menu لمعالجة النص في TextBox. Menu يحتوي على MenuItem الكائنات التي تستخدم Command ، IsCheckable ، و Header الخصائص و Checked ، Unchecked ، والأحداث Click .

<Menu>
  <MenuItem Header="_Edit">
    <MenuItem Command="ApplicationCommands.Copy"/>
    <MenuItem Command="ApplicationCommands.Cut"/>
    <MenuItem Command="ApplicationCommands.Paste"/>
  </MenuItem>
  <MenuItem Header="_Font">
    <MenuItem Header="_Bold" IsCheckable="True"
              Checked="Bold_Checked"
              Unchecked="Bold_Unchecked"/>
    <MenuItem Header="_Italic" IsCheckable="True"
              Checked="Italic_Checked"
              Unchecked="Italic_Unchecked"/>
    <Separator/>
    <MenuItem Header="I_ncrease Font Size"
              Click="IncreaseFont_Click"/>
    <MenuItem Header="_Decrease Font Size"
              Click="DecreaseFont_Click"/>
  </MenuItem>
</Menu>
<TextBox Name="textBox1" TextWrapping="Wrap"
         Margin="2">
  The quick brown fox jumps over the lazy dog.
</TextBox>

Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Bold
End Sub

Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Normal
End Sub

Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Italic
End Sub

Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Normal
End Sub

Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize < 18 Then
        textBox1.FontSize += 2
    End If
End Sub

Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize > 10 Then
        textBox1.FontSize -= 2
    End If
End Sub

private void Bold_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Bold;
}

private void Bold_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Normal;
}

private void Italic_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Italic;
}

private void Italic_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Normal;
}

private void IncreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize < 18)
    {
        textBox1.FontSize += 2;
    }
}

private void DecreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize > 10)
    {
        textBox1.FontSize -= 2;
    }
}

اختصارات لوحة المفاتيح هي تركيبات الأحرف التي يمكن إدخالها لوحة المفاتيح لاستدعاء الأوامر Menu . ل مثال، الاختصار نسخ هو زر'Ctrl' + C. هناك خاصيتين إلى استخدام اختصارات لوحة المفاتيح وعناصر القوائم — InputGestureTextأو Command.

InputGestureText

يظهر المثال التالي كيفية استخدام خاصية InputGestureText لتعيين نص اختصار لوحة المفاتيح إلى عناصر التحكم MenuItem . هذا يضع اختصار لوحة المفاتيح في قائمة الفهرس. لم يقرنها بالأمر MenuItem. يجب أن يقوم التطبيق بمعالجة إدخال بيانات المستخدم لتنفيذ الإجراء.

<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>

Command

يظهر المثال التالي كيفية استخدام الخاصيةCommand لإقران مع فتح و مع حفظ و الأوامر مع عناصر التحكم. MenuItem لا تقوم خاصية الأمر بإقران أمر مع MenuItem ، ولكنه أيضًا يوفر نص إيماءة الإدخال لاستخدامها كطريقة مختصرة.

<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>

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

تصميم القائمة

باستخدام تصميم التحكم يمكنك بشكل كبير تغيير مظهر وسلوك عناصر التحكمMenu بدون الحاجة إلى كتابة عنصر التحكم المخصص. بالإضافة إلى إعداد الخصائص المرئية, يمكنك أيضاً تطبيق Style على أجزاء منفصلة من عنصر التحكم من خلال خصائص فردية لتغيير سلوك أجزاء من عنصر التحكم أو إضافة أجزاء إضافية أو تغيير تخطيط عنصر التحكم. توضح الأمثلة التالية العديد من الطرق لأضافة عنصر التحكم Style إلى Menu

يعرّف المثال الأول نمط Style يسمى بـ Simple، الذي يظهر كيفية استخدام إعدادات النظام الحالية في النمط الخاص بك. يعيّن الرمز اللون MenuHighlightBrush كلون الخلفية و MenuTextBrush كـاللون الأمامي . لاحظ استخدام مفاتيح المورد لتعيين الفرش.

<Style x:Key="Simple" TargetType="{x:Type MenuItem}">
  <Setter Property = "Background" Value= "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
  <Setter Property = "Foreground" Value= "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
  <Setter Property = "Height" Value= "{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"/>
</Style>

يستخدم النموذج التالي العناصرTrigger التي تتيح لك تغيير المظهر MenuItem استجابة للأحداث التي تحدث على Menu. عند تحريك الماوس عبر اللون الأماميMenu و الصفات المميزة للخط من قائمة عناصر التغيير.

<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
  <Style.Triggers>
    <Trigger Property="MenuItem.IsMouseOver" Value="true">
      <Setter Property = "Foreground" Value="Red"/>
      <Setter Property = "FontSize" Value="16"/>
      <Setter Property = "FontStyle" Value="Italic"/>
    </Trigger>
  </Style.Triggers>
</Style>

راجع أيضًا:

موارد أخرى

نموذج لمعرض عناصر تحكم WPF