RoutedCommand ها در WPF
RoutedCommand ها به ما کمک می کنند تا ورودی ها را در سطح معنایی بیشتری مدیریت کنیم. دستورات New، Open، Cut و Save چند نمونه از RoutedCommand های موجود در WPF هستند (البته می توانید دستورات مورد نظر خود را هم ایجاد کنید). این نوع دستورها بسیار کاربردی هستند و می توان از یک Menu یا میانبر کیبورد به آن ها دسترسی داشت. زمانی که اجرای دستور ممکن نباشد، کنترل مربوط به اجرای آن به حالت غیرفعال تغییر می کند.
مثال
در مثال زیر برای آیتم های Menu دستوراتی را تعریف کرده و آن ها را به دستورات موجود در WPF وصل کرده ایم. محتوای فایل MainWindow.xaml:
<Window x:Class = "WPFContextMenu.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local = "clr-namespace:WPFContextMenu" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "525"> <Grid> <StackPanel x:Name = "stack" Background = "Transparent"> <StackPanel.ContextMenu> <ContextMenu> <MenuItem Header = "New" Command = "New" /> <MenuItem Header = "Open" Command = "Open" /> <MenuItem Header = "Save" Command = "Save" /> </ContextMenu> </StackPanel.ContextMenu> <Menu> <MenuItem Header = "File" > <MenuItem Header = "New" Command = "New" /> <MenuItem Header = "Open" Command = "Open" /> <MenuItem Header = "Save" Command = "Save" /> </MenuItem> </Menu> </StackPanel> </Grid> </Window>
محتوای فایل MainWindow.xaml.cs:
using System.Windows; using System.Windows.Input; namespace WPFContextMenu { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); CommandBindings.Add(new CommandBinding(ApplicationCommands.New, NewExecuted, CanNew)); CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, OpenExecuted, CanOpen)); CommandBindings.Add(new CommandBinding(ApplicationCommands.Save, SaveExecuted, CanSave)); } private void NewExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to create new file."); } private void CanNew(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } private void OpenExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to open existing file."); } private void CanOpen(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } private void SaveExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to save a file."); } private void CanSave(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } } }
زمانی که مثال فوق را کامپایل و اجرا کنید، خروجی زیر را تولید خواهد کرد:
نوشته RoutedCommand ها در WPF – آموزش WPF اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.