کنترل ContextMenu در WPF
ContextMenu یک منو Pop-up است که به کنترل اجازه می دهد تا قابلیت های مربوط به خودش را به صورت یک منوی زمینه ای نمایش دهد. در تصویر زیر می توانید سلسله مراتب مربوط به ارث بری کنترل ContextMenu را مشاهده کنید.
خاصیت های پرکاربرد
در جدول زیر می توانید خاصت های پر استفاده مربوط به ContextMenu را به همراه توضیح مختصری در مورد هر کدام مشاهده کنید.
ردیف | توضیحات |
1 | Background به منظور گرفتن و یا تنظیم رنگ پس زمینه کنترل استفاده می شود (به ارث رسیده از Control). |
2 | BorderThickness به منظور گرفتن و یا تنظیم میزان ضخامت حاشیه کنترل استفاده می شود (به ارث رسیده از Control). |
3 | ContextMenu به منظور گرفتن یا تنظیم منوی زمینه ایی که در هنگام درخواست منوی زمینه ای باید نمایش داده شود، استفاده می شود (به ارث رسیده از FrameworkElement). |
4 | FontFamily به منظور گرفتن و یا تنظیم نوع فونت محتوای کنترل استفاده می شود (به ارث رسیده از Control). |
5 | FontSize به منظور گرفتن و یا تنظیم اندازه فونت محتوای کنترل استفاده می شود (به ارث رسیده از Control). |
6 | FontStyle به منظور گرفتن و یا تنظیم استایل فونت محتوای کنترل استفاده می شود. مقادیر قابل تنظیم عبارت اند از Normal، Italic و Oblique (به ارث رسیده از Control). |
7 | FontWeight به منظور گرفتن و یا تنظیم میزان ضخامت فونت استفاده می شود (به ارث رسیده از Control). |
8 | Foreground به منظور گرفتن و یا تنظیم رنگ پیش زمینه (رنگ رویی) استفاده می شود (به ارث رسیده از Control). |
9 | GroupStyle به منظور گرفتن مجموعه از شیء GroupStyle که برای ظاهر هر سطح از گروه بندی ایتم ها استفاده می شود (به ارث رسیده از ItemsControl). |
10 | Height به منظور گرفتن و یا تنظیم میزان ارتفاع کنترل استفاده می شود (به ارث رسیده از FrameworkElement). |
11 | HorizontalAlignment به منظور گرفتن و یا تنظیم تراز افقی کنترل در داخل کنترل والد استفاده می شود (به ارث رسیده از FrameworkElement). |
12 | IsFocused به منظور گرفتن وضعیت فوکوس منطقی استفاده می شود (به ارث رسیده از UIElement). |
13 | IsOpen به منظور گرفتن و یا تنظیم وضعیت باز بودن کنترل استفاده می شود. |
14 | IsEnabled به منظور گرفتن و یا تنظیم وضعیت فعال بودن یا نبودن کنترل استفاده می شود. زمانی که کنترلی غیرفعال باشد، کاربر نمی تواند با آن تعامل کند (به ارث رسیده از Control). |
15 | Margin میزان فاصله بیرونی کنترل را مشخص می کند (به ارث رسیده از FrameworkElement). |
16 | Name به منظور تنظیم یک نام شناسایی برای کنترل استفاده می شود. زمانی که پردازنده XAML درخت اشیاء را ایجاد می کند، کد Run-time می تواند با استفاده از نام یک کنترل به آن ارجاع دهد (به ارث رسیده از FrameworkElement). |
17 | Opacity میزان شفافیت کنترل را مشخص می کند. مقدار قابل قبول باید بین 0.0 تا 1.0 باشد (به ارث رسیده از UIElement). |
18 | Style استایل مربوط به کنترل را تنظیم می کند (به ارث رسیده از FrameworkElement). |
19 | VerticalAlignment تراز عمودی کنترل را در داخل کنترل والد مشخص می کند (به ارث رسیده از FrameworkElement). |
20 | Width به منظور گرفتن و یا تنظیم میزان عرض کنترل استفاده می شود (به ارث رسیده از FrameworkElement). |
متدهای پرکاربرد
در جدول زیر می توانید متدهای پر استفاده مربوط به ContextMenu را به همراه توضیح مختصری در مورد هر کدام مشاهده کنید.
ردیف | توضیحات |
1 | AddChild شیء مشخص شده را به عنوان فرزند به ItemsControl اضافه می کند (به ارث رسیده از ItemsControl). |
2 | FindName شیء که نام مشخص شده را داشته باشد را پیدا می کند (به ارث رسیده از FrameworkElement). |
3 | Focus به منظور تنظیم فوکوس بر روی کنترل استفاده می شود (به ارث رسیده از Control). |
4 | OnDragEnter قبل از اینکه رویداد DragEnter اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
5 | OnDragLeave قبل از اینکه رویداد DragLeave اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
6 | OnDragOver قبل از اینکه رویداد DragOver اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
7 | OnDrop قبل از اینکه رویداد Drop اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
8 | OnGotFocus قبل از اینکه رویداد GotFocus اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
9 | OnLostFocus قبل از اینکه رویداد LostFocus اتفاق افتد، این متد فراخوانی می شود (به ارث رسیده از Control). |
10 | SetBinding این متد به منظور بایند کردن مقادیر استفاده می شود (به ارث رسیده از FrameworkElement). |
رویدادهای پرکاربرد
در جدول زیر می توانید رویدادهای پر استفاده مربوط به ContextMenu را به همراه توضیح مختصری در مورد هر کدام مشاهده کنید.
ردیف | توضیحات |
1 | Closed زمانی که یک نمونه خاص از یک ContextMenu بسته شود، رخ می دهد. |
2 | ContextMenuClosing قبل از بسته شدن ContextMenu رخ می دهد (به ارث رسیده از FrameworkElement). |
3 | ContextMenuOpening زمانی که ContextMenu بخواهد باز شود، رخ می دهد (به ارث رسیده از FrameworkElement). |
4 | DataContextChanged زمانی که ContextMenu تغییر کند رخ می دهد (به ارث رسیده از FrameworkElement). |
5 | DragEnter زمانی که سیستم ورودی یک رویداد drag که هدفش این کنترل است را گزارش دهد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
6 | DragLeave زمانی که سیستم ورودی یک رویداد drag که منشاء آن این کنترل است را گزارش دهد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
7 | DragOver زمانی که سیستم ورودی یک رویداد drag را با این کنترل به عنوان هدف drop شدن، گزارش دهد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
8 | GotFocus زمانی که بر روی کنترل فوکوس شود، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
9 | IsEnabledChanged زمانی که مقدار خایت IsEnabled تغییر کند، این رویداد رخ می دهد (به ارث رسیده از Control). |
10 | KeyDown زمانی که یک کلید از کیبورد فشار داده شود و فوکوس جاری بر روی کنترل باشد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
11 | KeyUp زمانی که کلید فشار داده شده رها شود و فوکوس جاری بر روی کنترل باشد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
12 | LostFocus زمانی که کنترل فوکوس را از دست بدهد، این رویداد رخ می دهد (به ارث رسیده از UIElement). |
مثال:
یک پروژه WPF با نام WPFContextMenuControl ایجاد کنید و سپس یک کنترل TextBox را به پنجره اصلی برنامه اضافه کنید و خاصیت آن ها را به صورت زیر تغییر کنید.
خاصیت | مقدار |
Name | textBox1 |
Text | Hi, this is WPF tutorial |
TextWarping | Warp |
Width | 300 |
کدهای XAML مربوط به مثال فوق باید به شکل زیر باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <Window x:Class = "WPFContextMenuControl.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:WPFContextMenuControl" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> <Grid> <TextBox x:Name = "textBox1" HorizontalAlignment = "Left" Height = "178" Margin = "92,61,0,0" TextWrapping = "Wrap" Text = "Hi, this is WPF tutorial" VerticalAlignment = "Top" Width = "306"> <TextBox.ContextMenu> <ContextMenu> <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 = "Increase Font Size" Click = "IncreaseFont_Click" /> <MenuItem Header = "_Decrease Font Size" Click = "DecreaseFont_Click" /> </ContextMenu> </TextBox.ContextMenu> </TextBox> </Grid> </Window> |
کدهای C# مربوط به مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | using System.Windows; namespace WPFContextMenuControl { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } 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; } } } } |
اگر برنامه را کامپایل و اجرا کنید خروجی زیر را تولید می کند.
هیچ نظری ثبت نشده است