Menüye Genel Bakış
MenuSınıfı, komutlarla ve olay işleyicileriyle ilişkili öğeleri hiyerarşik sırayla düzenlemenizi sağlar. Her Menu öğe bir öğe koleksiyonu içerir MenuItem .
Menü denetimi
MenuDenetim, bir uygulama için komutları veya seçenekleri belirten öğelerin bir listesini sunar. Genellikle, a tıklandığında bir MenuItem alt menü açılır veya bir uygulamanın bir komutu gerçekleştirmesini sağlar.
Menü Oluşturma
Aşağıdaki örnek, Menu içindeki metni işlemek için bir oluşturur TextBox . , Menu , MenuItemCommandIsCheckable , Ve Header özelliklerini ve, CheckedUnchecked ve Click olaylarını kullanan nesneler 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
Klavye kısayollarıyla MenuItems
Klavye kısayolları komutları çağırmak için klavyeyle girilebilecek karakter birleşimleridir Menu . Örneğin, Kopyala kısayolu Ctrl + C ' dir. Klavye kısayolları ve menü öğeleri ile kullanabileceğiniz iki özellik vardır — InputGestureText veya Command .
InputGestureText
Aşağıdaki örnek, InputGestureText denetimlerine klavye kısayol metni atamak için özelliğinin nasıl kullanılacağını gösterir MenuItem . Bu yalnızca klavye kısayolunu menü öğesine koyar. Komutunu ile ilişkilendirmez MenuItem . Uygulamanın, eylemi gerçekleştirmek için kullanıcının girişini işlemesi gerekir.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Komut
Aşağıdaki örnek, CommandCommand ve Kaydet komutlarının denetimleriyle ilişkilendirilmesi için özelliğinin nasıl kullanılacağını gösterir . Komut özelliği bir komutu bir ile ilişkilendirmez MenuItem , ancak kısayol olarak kullanılacak giriş hareketi metnini de sağlar.
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
MenuItemSınıfı ayrıca CommandTarget , komutun gerçekleştiği öğeyi belirten bir özelliğine sahiptir. CommandTargetAyarlanmamışsa, klavye odağı olan öğe komutu alır. Komutlar hakkında daha fazla bilgi için bkz. komut verme genel bakış.
Menü stili oluşturma
Denetim stili ile, denetimlerin görünümünü ve davranışını Menu özel bir denetim yazmak zorunda kalmadan önemli ölçüde değiştirebilirsiniz. Görsel özellikleri ayarlamaya ek olarak, bir Style denetimin bireysel bölümlerine bir de uygulayabilir, denetimin bölümlerinin davranışlarını özellikler aracılığıyla değiştirebilir veya bir denetimin yerleşimini değiştirebilirsiniz. Aşağıdaki örneklerde bir denetime eklemek için çeşitli yollar gösterilmektedir StyleMenu .
İlk kod örneği, StyleSimple stilinize geçerli sistem ayarlarının nasıl kullanılacağını gösteren bir çağrılan öğesini tanımlar. Kod, MenuHighlightBrush menünün arka plan rengi olarak ve MenuTextBrush menünün ön plan rengi olarak rengini atar. Fırçaları atamak için kaynak anahtarlarını kullanacağınızı unutmayın.
<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>
Aşağıdaki örnek, ' TriggerMenuItem de gerçekleşen olaylara yanıt olarak görünümünü değiştirmenize olanak sağlayan öğeleri kullanır Menu . Fareyi üzerine getirdiğinizde Menu , ön plan rengi ve menü öğelerinin yazı tipi özellikleri değişir.
<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>