Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi példa bemutatja, hogyan csatlakoztassunk egy RoutedCommand-t egy Control-hez, amely beépített támogatással rendelkezik a parancshoz. A parancsokat több forráshoz csatlakoztató teljes mintaért tekintse meg a Custom RoutedCommand Minta létrehozása mintát.
példa
A Windows Presentation Foundation (WPF) olyan gyakori parancsok tárát biztosítja, amelyekkel az alkalmazásprogramozók rendszeresen találkoznak. A parancstárat alkotó osztályok a következők: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommandsés EditingCommands.
Az osztályokat alkotó statikus RoutedCommand objektumok nem biztosítanak parancslogikát. A parancs logikája egy CommandBinding-ás kóddal van társítva a parancshoz. Egyes vezérlők beépítették a CommandBindings parancsokat egyes parancsokhoz. Ez a mechanizmus lehetővé teszi, hogy a parancs szemantikája változatlan maradjon, míg a tényleges implementáció változhat. Egy TextBoxpéldául másképp kezeli a Paste parancsot, mint a képeket támogató vezérlőt, de a beillesztés alapgondolata változatlan marad. A parancslogikát nem tudja megadni a parancs, hanem a vezérlőnek vagy az alkalmazásnak kell megadnia.
A WPF számos vezérlője támogatja a parancstár egyes parancsait. TextBoxpéldául számos alkalmazás-szerkesztési parancsot támogat, például Paste, Copy, Cut, Redoés Undo. Az alkalmazásfejlesztőnek nem kell semmi különlegeset tennie ahhoz, hogy ezek a parancsok működjenek ezekkel a vezérlőkkel. Ha a parancs végrehajtásakor a TextBox a parancs célja, akkor a parancsot a vezérlőbe beépített CommandBinding fogja kezelni.
Az alábbiakban bemutatjuk, hogyan használható MenuItem a Paste parancs parancsforrásaként, ahol egy TextBox a parancs célja. Az TextBox vezérlőbe minden olyan logika be van építve, amely meghatározza, hogy a TextBox hogyan hajtja végre a beillesztést.
Létrejön egy MenuItem, és Command tulajdonsága a Paste parancsra van állítva. A CommandTarget nincs explicit módon beállítva a TextBox objektumra. Ha a CommandTarget nincs beállítva, a parancs célja a billentyűzetfókuszú elem. Ha a billentyűzetfókuszú elem nem támogatja a Paste parancsot, vagy jelenleg nem tudja végrehajtani a beillesztési parancsot (például a vágólap üres), akkor a MenuItem kiszürkítve jelenik meg.
<Window x:Class="SDKSamples.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MenuItemCommandTask"
>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Command="ApplicationCommands.Paste" Width="75" />
</Menu>
<TextBox BorderBrush="Black" BorderThickness="2" Margin="25"
TextWrapping="Wrap">
The MenuItem will not be enabled until
this TextBox gets keyboard focus
</TextBox>
</DockPanel>
</Window>
// Window1 constructor
public Window1()
{
InitializeComponent();
// Instantiating UIElements.
DockPanel mainPanel = new DockPanel();
Menu mainMenu = new Menu();
MenuItem pasteMenuItem = new MenuItem();
TextBox mainTextBox = new TextBox();
// Associating the MenuItem with the Paste command.
pasteMenuItem.Command = ApplicationCommands.Paste;
// Setting properties on the TextBox.
mainTextBox.Text =
"The MenuItem will not be enabled until this TextBox receives keyboard focus.";
mainTextBox.Margin = new Thickness(25);
mainTextBox.BorderBrush = Brushes.Black;
mainTextBox.BorderThickness = new Thickness(2);
mainTextBox.TextWrapping = TextWrapping.Wrap;
// Attaching UIElements to the Window.
this.AddChild(mainPanel);
mainMenu.Items.Add(pasteMenuItem);
mainPanel.Children.Add(mainMenu);
mainPanel.Children.Add(mainTextBox);
// Defining DockPanel layout.
DockPanel.SetDock(mainMenu, Dock.Top);
DockPanel.SetDock(mainTextBox, Dock.Bottom);
}
' Window1 constructor
Public Sub New()
InitializeComponent()
' Instantiating UIElements.
Dim mainPanel As New DockPanel()
Dim mainMenu As New Menu()
Dim pasteMenuItem As New MenuItem()
Dim mainTextBox As New TextBox()
' Associating the MenuItem with the Paste command.
pasteMenuItem.Command = ApplicationCommands.Paste
' Setting properties on the TextBox.
mainTextBox.Text = "The MenuItem will not be enabled until this TextBox receives keyboard focus."
mainTextBox.Margin = New Thickness(25)
mainTextBox.BorderBrush = Brushes.Black
mainTextBox.BorderThickness = New Thickness(2)
mainTextBox.TextWrapping = TextWrapping.Wrap
' Attaching UIElements to the Window.
Me.AddChild(mainPanel)
mainMenu.Items.Add(pasteMenuItem)
mainPanel.Children.Add(mainMenu)
mainPanel.Children.Add(mainTextBox)
' Defining DockPanel layout.
DockPanel.SetDock(mainMenu, Dock.Top)
DockPanel.SetDock(mainTextBox, Dock.Bottom)
End Sub
Lásd még
.NET Desktop feedback