Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ContextMenu sınıfı, bağlamına özgü Menu kullanarak işlevselliği kullanıma sunan öğeyi temsil eder. , ContextMenu belirli bir denetime eklenir ve kullanıcılara, gibi Buttonbelirli bir denetimle ilişkili komutları veya seçenekleri belirten bir öğe listesi sunmanızı sağlar.
Genellikle, kullanıcılar ContextMenu öğesini kullanıcı arabiriminde sağ fare düğmesi aracılığıyla görünür hale getirir. Kullanıcılar denetime sağ tıkladığında menü görüntülenir. MenuItem öğesine tıklamak genellikle bir alt menüyü açar veya bir uygulamanın komut yürütmesine neden olur.
ContextMenu Oluşturma
ContextMenu öğesini ya XAML'de bildirerek ya da kod ile programatik olarak oluşturarak oluşturabilirsiniz.
Aşağıdaki örnekte, XAML'de bağlam menüsünün nasıl bildir olduğu gösterilmektedir:
<Button Name="cmButton" Height="30" Width="200">
Button with Context Menu
<Button.ContextMenu>
<ContextMenu Name="cm" Opened="Menu_OnOpened" Closed="Menu_OnClosed" StaysOpen="true">
<MenuItem Header="File"/>
<MenuItem Header="Save"/>
<MenuItem Header="SaveAs"/>
<MenuItem Header="Recent Files">
<MenuItem Header="ReadMe.txt"/>
<MenuItem Header="Schedule.xls"/>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>
Sonraki örnekte kodda program aracılığıyla bağlam menüsünün nasıl oluşturulacağı gösterilmektedir:
private void CreateContextMenuProgrammatically()
{
Button button = new() { Content = "Created with C#" };
ContextMenu contextMenu = new();
button.ContextMenu = contextMenu;
MenuItem fileMenuItem = new() { Header = "File" };
MenuItem newMenuItem = new() { Header = "New" };
fileMenuItem.Items.Add(newMenuItem);
MenuItem openMenuItem = new() { Header = "Open" };
fileMenuItem.Items.Add(openMenuItem);
MenuItem recentlyOpenedMenuItem = new() { Header = "Recently Opened" };
openMenuItem.Items.Add(recentlyOpenedMenuItem);
MenuItem textFileMenuItem = new() { Header = "Text.xaml" };
recentlyOpenedMenuItem.Items.Add(textFileMenuItem);
contextMenu.Items.Add(fileMenuItem);
// Add the button to your container (implementation depends on your layout)
// containerPanel.Children.Add(button);
}
Private Sub CreateContextMenuProgrammatically()
Dim button As New Button() With {.Content = "Created with Visual Basic"}
Dim contextMenu As New ContextMenu()
button.ContextMenu = contextMenu
Dim fileMenuItem As New MenuItem() With {.Header = "File"}
Dim newMenuItem As New MenuItem() With {.Header = "New"}
fileMenuItem.Items.Add(newMenuItem)
Dim openMenuItem As New MenuItem() With {.Header = "Open"}
fileMenuItem.Items.Add(openMenuItem)
Dim recentlyOpenedMenuItem As New MenuItem() With {.Header = "Recently Opened"}
openMenuItem.Items.Add(recentlyOpenedMenuItem)
Dim textFileMenuItem As New MenuItem() With {.Header = "Text.xaml"}
recentlyOpenedMenuItem.Items.Add(textFileMenuItem)
contextMenu.Items.Add(fileMenuItem)
' Add the button to your container (implementation depends on your layout)
' containerPanel.Children.Add(button)
End Sub
ContextMenu'ya stil uygulama
bir denetim Stylekullanarak, özel denetim yazmadan bir ContextMenu öğesinin görünümünü ve davranışını önemli ölçüde değiştirebilirsiniz. Görsel özellikleri ayarlayabilir ve bir denetimin bölümlerine stiller uygulayabilirsiniz. Örneğin, özellikleri kullanarak denetimin bölümlerinin davranışını değiştirebilir veya öğesine parça ekleyebilir veya düzenini ContextMenudeğiştirebilirsiniz. Aşağıdaki örneklerde denetimlere stil ContextMenu eklemenin çeşitli yolları gösterilmektedir.
İlk örnek, geçerli sistem ayarlarının stilinizde nasıl kullanılacağını gösteren adlı SimpleSysResourcesbir stil tanımlar. Örnek, MenuHighlightBrushKey öğesini Background rengi ve MenuTextBrushKey öğesini ise Foreground rengi olarak ContextMenu'a atar.
<Style x:Key="SimpleSysResources" TargetType="{x:Type MenuItem}">
<Setter Property = "Background" Value=
"{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
<Setter Property = "Foreground" Value=
"{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
</Style>
Aşağıdaki örnek, ContextMenu üzerinde tetiklenen olaylara yanıt olarak bir Menu'in görünümünü değiştirmek için Trigger öğesini kullanır. Kullanıcı fareyi menünün üzerine getirince öğelerin görünümü ContextMenu değişir.
<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "FontSize" Value="16"/>
<Setter Property = "FontStyle" Value="Italic"/>
<Setter Property = "Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
Stiller ve şablonlar
Bu bölümde ContextMenu denetim için stiller ve şablonlar açıklanmaktadır. Denetime benzersiz bir görünüm vermek için varsayılanı ControlTemplate değiştirebilirsiniz. Daha fazla bilgi için bkz. Stiller ve şablonlar ve Denetim için şablon oluşturma.
İçerik özelliği
Denetim ContextMenu, içerik özelliği olarak Items özelliğini kullanır; bu özellik, bağlam menüsünde görüntülenen menü öğelerini içerir.
Parçalar
Denetim ContextMenu adlandırılmış şablon parçaları tanımlamaz.
ControlTemplate oluşturduğunuzda bir ContextMenu için, şablonunuz içinde bir ItemsPresenter ve bir ScrollViewer içerebilir. içindeki ItemsPresenter, her öğeyi ContextMenu içinde görüntüler ve ScrollViewer, denetim içinde kaydırmayı etkinleştirir. Eğer ItemsPresenter öğesi doğrudan ScrollViewer'nin alt öğesi değilse, ItemsPresenter'ye ItemsPresenter adını vermelisiniz.
Görsel durumlar
Aşağıdaki tabloda denetimin görsel durumları listelenmiştir ContextMenu .
| Görsel durum adı | Görsel durum grubu adı | Description |
|---|---|---|
| Geçerli | DoğrulamaDurumları | Denetim geçerli ve doğrulama hatası yok. |
| GeçersizOdaklı | DoğrulamaDurumları | Kontrol öğesinde doğrulama hatası var ve klavye odağı bulunuyor. |
| InvalidUnfocused | DoğrulamaDurumları | Denetimde doğrulama hatası var ancak klavye odağı yok. |
Ayrıca bakınız
.NET Desktop feedback