Aracılığıyla paylaş


Menü

sınıfı, Menu komutlarla ve olay işleyicileriyle ilişkili öğeleri hiyerarşik bir düzende düzenlemenizi sağlar. Her Menu öğe bir öğe koleksiyonu MenuItem içerir.

Birden çok MenuItem denetimine sahip menü denetimini gösteren ekran görüntüsü.

Stiller ve şablonlar

Varsayılan ControlTemplate'yi, Menu kontrolüne benzersiz bir görünüm vermek için değiştirebilirsiniz. Daha fazla bilgi için bkz. Stiller ve şablonlar nedir? ve Denetim için şablon oluşturma.

İçerik özelliği

Denetim Menu, içerik özelliği olarak Items özelliğini kullanır. Bu özellik, kullanıcıların etkileşim kurabileceği bir Menu öğe koleksiyonuyla MenuItem doldurmanıza olanak tanır.

Parçalar

Denetimin Menu adlandırılmış bölümü yok.

ControlTemplate oluşturduğunuzda bir Menu için, şablonunuz içinde bir ItemsPresenter ve bir ScrollViewer içerebilir. ItemsPresenter her öğeyi Menu içinde görüntüler; ScrollViewer ile denetim içerisinde kaydırma yapılmasını sağlar. öğesinin ItemsPresenter doğrudan alt öğesi ScrollViewerdeğilse, adını ItemsPresentervermelisinizItemsPresenter.

Görsel durumlar

Aşağıdaki tabloda denetimin görsel durumları listelenmiştir Menu .

VisualState Adı VisualStateGroup Adı Description
Geçerli DoğrulamaDurumları Denetim sınıfını Validation kullanır ve Validation.HasError ekli özelliği ise şeklindedir false.
GeçersizOdaklı DoğrulamaDurumları Validation.HasError Ekli özelliğin true kontrolün odakta olup olmadığını belirttiği.
InvalidUnfocused DoğrulamaDurumları Validation.HasError Ekli özellik, true kontrolünün odaklanmadığı durumları içerir.

Temel kavramlar

Denetimle Menu çalışırken aşağıdaki kavramlar önemlidir.

Klavye kısayolları, komutları çağırmak Menu için klavyeyle girilebilen karakter bileşimleridir. Örneğin, Kopyala kısayolu CTRL+C'dir. Klavye kısayolları ve menü öğeleriyle kullanılacak iki özellik vardır:InputGestureText veya Command.

Girdi Hareket Metni

InputGestureText Denetimlere klavye kısayolu metni atamak için MenuItem özelliğini kullanın. Bu yalnızca klavye kısayolunu menü öğesine yerleştirir. Komut, MenuItem ile ilişkilendirilmez. Uygulamanın eylemi gerçekleştirmek için kullanıcının girişini işlemesi gerekir.

Command

Command ve Kaydet gibi komutları denetimlerle MenuItem için özelliğini kullanın. Komut özelliği bir komutu ile MenuItem ilişkilendirmekle kalmaz, aynı zamanda kısayol olarak kullanmak üzere giriş hareketi metnini de sağlar.

MenuItem sınıfı, komutun gerçekleştiği öğeyi belirten bir CommandTarget özelliğine sahiptir. Ayarlı değilse CommandTarget , klavye odağı olan öğe komutunu alır. Komutlar hakkında daha fazla bilgi için bkz. Komuta Genel Bakış.

Örnekler

Aşağıdaki örneklerde denetimin Menu farklı senaryolarda nasıl kullanılacağı gösterilmektedir.

Menü oluşturma

Denetim, Menu bir uygulama için komutları veya seçenekleri belirten öğelerin listesini sunar. Genellikle bir MenuItem öğesine tıklanması bir alt menüyü açar veya bir uygulamanın komut yürütmesine neden olur.

Aşağıdaki örnek, içindeki Menu metni işlemek için bir TextBoxoluşturur. Menu, MenuItem, Command, ve IsCheckable özelliklerini ve Header, Checked, ve Unchecked olaylarını kullanan Click nesneleri içerir.

<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 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;
    }
}

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

Menü Öğeleri ile InputGestureText Kullanma

Aşağıdaki örnekte, denetimlere klavye kısayolu metni atamak için InputGestureText özelliğinin nasıl kullanılacağı MenuItem gösterilmektedir:

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

MenuItems ile Command özelliğini kullanma

Aşağıdaki örnekteCommand ve Kaydet komutlarını denetimlerle ilişkilendirmek için özelliğinin nasıl kullanılacağı MenuItem gösterilmektedir:

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

Ayrıca bakınız