ایجاد منو درWPF
دوشنبه 24 آبان 1395در این مقاله با ارائه یک مثال ساده ، مرحله به مرحله به بررسی چگونگی ایجاد یک منو و چگونگی بارگذاری و load صفحه یا فرم مربوط به آن گزینه از منو ، در WPF خواهیم پرداخت .
راه های مختلفی برای ایجاد منو در WPF وجود دارد ، ما در این مقاله از Frame برای ایجاد منو استفاده خواهیم کرد . با یک جستجوی ساده میتوانید راه های دیگر برای ایجاد منو در WPF را براحتی نیز یافت کنید .
نکته : برای کسانی که با Windows Application در Windows Form آشنایی دارند ، ما میتوانیم MDI ایجاد کنیم . در WPF ما توانایی ایجاد MDI را در فرم های خود نداریم .
• ابتدا ، Visual Studio را باز کنید :
• حال عکس های مربوط به پروژه را به آن اضافه کنید ، برای ان کار یک فولدر با نام images ساخته و تصاویر را به آن اضافه کنید :
• پس از اضافه کردن تصاویر به پروژه ، کدهای لازم را برای MainScreen یا همان صفحه اصلی خود می نویسیم .
<Window x:Class="The_Parcel.MainScreen" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="{Binding SystemParameters.PrimaryScreenHeight}" Width="{Binding SystemParameters.PrimaryScreenWidth}" Title="Dashbooard" Topmost="False" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow" WindowState="Maximized" >
• همانطور که مشاهده میکنید ، title = dashboard میباشد ، این نامگذاری به سلیقه شماست ، که در بالای برنامه نمایش داده خواهد شد . نامی مناسب برای برنامه خود انتخاب کنید :
• Windowstartuplocation : موقعیت مکانی باز شدن صفحه را مشخص میکند . Centerscreen بدین معناست که در وسط صفحه نمایش داده خواهد شد .
• WindowState : وضعیت صفحه را مشخص میکند ، که بصورت Maximize نمایش داده شود یا Minimize .
وضعیت های WindowsState :
Maximized ، صفحه به صورت تمام صفحه نمایش داده خواهد شد . درحالی که در وضعیت Minimized صفحه کوچکی نمایش داده خواهد شد .
<Window.Background> <ImageBrush ImageSource="Images/Simple-Orange-Wallpaper.jpg" /> </Window.Background> <Window.Resources> <ImageBrush x:Key="Background1" ImageSource="Images/17_Booksellers_Most.jpg" /> <ImageBrush x:Key="Background2" ImageSource="Images/promotion_new.png" /> <ImageBrush x:Key="Background3" ImageSource="Images/smsalerts.jpg" /> <ImageBrush x:Key="Background4" ImageSource="Images1/reports.jpg" /> <ImageBrush x:Key="Background5" ImageSource="Images1/xyz.png" /> <ImageBrush x:Key="Background6" ImageSource="Images1/partyorders.jpg" /> <ImageBrush x:Key="Background7" ImageSource="Images/help_balloon.png" /> <ImageBrush x:Key="Background8" ImageSource="Images1/neworder.jpg" /> <ImageBrush x:Key="Background9" ImageSource="Images1/inventory.png" /> <ImageBrush x:Key="Background10" ImageSource="Images1/Loyalcustomers.jpg" /> <ImageBrush x:Key="Background11" ImageSource="Images1/oie_3svVKQ9e5T5o.png" /> </Window.Resources>
• کلید هایی را که برای دکمه ها مشخص کردید را به یاد داشته باشید .
• حال دکمه ها را اضافه کنید .
همانطور که در کد زیر مشاهده میکنید ، ما برای دکمه یک کلید مشخص میکنیم :
<ImageBrush x:Key="Background2" ImageSource="Images/promotion_new.png" />
حال ، به دنبال اضافه کردن کلید ها ، آن هارا بوسیله {staticResource ResourceKey=”ItsBackground”}
bind میکنیم .
<Viewbox Stretch="Uniform"> <Grid Height="950" Width="1500"> <Grid Height="950"> <Grid.ColumnDefinitions> <ColumnDefinition Width="435*" /> <ColumnDefinition Width="723*" /> </Grid.ColumnDefinitions> <Button Background="{StaticResource ResourceKey=Background3}" ToolTip="Send SMS and Email." Height="91" HorizontalAlignment="Left" Name="btnSMSEmail" VerticalAlignment="Top" Width="100" Click="btnSMSEmail_Click" Grid.Column="1" Margin="19,8,0,0"> </Button> <Button Background="{StaticResource ResourceKey=Background5}" ToolTip="Manage employee data." Height="92" HorizontalAlignment="Left" Margin="473,7,0,0" Name="btnEmpDetails" VerticalAlignment="Top" Width="90" Click="btnEmpDetails_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background7}" ToolTip="Need help click here." Height="91" HorizontalAlignment="Left" Margin="134,8,0,0" Name="btnHelp" VerticalAlignment="Top" Width="92" Grid.Column="1" Click="btnHelp_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background8}" Height="91" ToolTip="Place New Order" HorizontalAlignment="Left" Margin="14,7,0,0" Name="btnOrder" VerticalAlignment="Top" Width="92" Click="btnOrder_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background9}" ToolTip="View Reports" Height="91" HorizontalAlignment="Left" Margin="132,7,0,0" Name="btnInventory" VerticalAlignment="Top" Width="92" Click="btnInventory_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background10}" ToolTip="View your customers." Height="92" HorizontalAlignment="Left" Margin="365,7,0,0" Name="btnCustomer" VerticalAlignment="Top" Width="92" Click="btnCustomer_Click" Grid.ColumnSpan="2"> </Button> <Button Background="{StaticResource ResourceKey=Background11}" ToolTip="Party orders coming soon.." Height="92" HorizontalAlignment="Left" Margin="250,6,0,0" Name="btnPartyOrders" VerticalAlignment="Top" Width="92" Click="btnPartyOrders_Click_1"> </Button>
ازاین جا به بعد ، این همانند یک منو نمایش داده خواهد شد ، به تصویر زیر توجه فرمایید :
حال به سراغ اضافه کردن یک frame برای نمایش فرم های مربوط به هر منو می رویم .
یک تگ معمولی <Frame></Frame> در اینجا ایجاد خواهد شد . و ما یکسری property برای آن مشخص میکنیم :
VerticalAlignment="Stretch" Width="1480" NavigationUIVisibility="Hidden" Grid.ColumnSpan="2" <Frame Height="900" HorizontalAlignment="Left" Name="frame1" VerticalAlignment="Stretch" Width="1480" NavigationUIVisibility="Hidden" Grid.ColumnSpan="2" Margin="6,104,0,6"></Frame>
• کد نهایی :
MainScren.Xaml :
<Window x:Class="The_Parcel.MainScreen" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="{Binding SystemParameters.PrimaryScreenHeight}" Width="{Binding SystemParameters.PrimaryScreenWidth}" Title="Dashbooard" Topmost="False" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow" WindowState="Maximized" > <Window.Background> <ImageBrush ImageSource="Images/Simple-Orange-Wallpaper.jpg" /> </Window.Background> <Window.Resources> <ImageBrush x:Key="Background1" ImageSource="Images/17_Booksellers_Most.jpg" /> <ImageBrush x:Key="Background2" ImageSource="Images/promotion_new.png" /> <ImageBrush x:Key="Background3" ImageSource="Images/smsalerts.jpg" /> <ImageBrush x:Key="Background4" ImageSource="Images1/reports.jpg" /> <ImageBrush x:Key="Background5" ImageSource="Images1/xyz.png" /> <ImageBrush x:Key="Background6" ImageSource="Images1/partyorders.jpg" /> <ImageBrush x:Key="Background7" ImageSource="Images/help_balloon.png" /> <ImageBrush x:Key="Background8" ImageSource="Images1/neworder.jpg" /> <ImageBrush x:Key="Background9" ImageSource="Images1/inventory.png" /> <ImageBrush x:Key="Background10" ImageSource="Images1/Loyalcustomers.jpg" /> <ImageBrush x:Key="Background11" ImageSource="Images1/oie_3svVKQ9e5T5o.png" /> </Window.Resources> <Viewbox Stretch="Uniform"> <Grid Height="950" Width="1500"> <Grid Height="950"> <Grid.ColumnDefinitions> <ColumnDefinition Width="435*" /> <ColumnDefinition Width="723*" /> </Grid.ColumnDefinitions> <Button Background="{StaticResource ResourceKey=Background3}" ToolTip="Send SMS and Email." Height="91" HorizontalAlignment="Left" Name="btnSMSEmail" VerticalAlignment="Top" Width="100" Click="btnSMSEmail_Click" Grid.Column="1" Margin="19,8,0,0"> </Button> <Button Background="{StaticResource ResourceKey=Background5}" ToolTip="Manage employee data." Height="92" HorizontalAlignment="Left" Margin="473,7,0,0" Name="btnEmpDetails" VerticalAlignment="Top" Width="90" Click="btnEmpDetails_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background7}" ToolTip="Need help click here." Height="91" HorizontalAlignment="Left" Margin="134,8,0,0" Name="btnHelp" VerticalAlignment="Top" Width="92" Grid.Column="1" Click="btnHelp_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background8}" Height="91" ToolTip="Place New Order" HorizontalAlignment="Left" Margin="14,7,0,0" Name="btnOrder" VerticalAlignment="Top" Width="92" Click="btnOrder_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background9}" ToolTip="View Reports" Height="91" HorizontalAlignment="Left" Margin="132,7,0,0" Name="btnInventory" VerticalAlignment="Top" Width="92" Click="btnInventory_Click"> </Button> <Button Background="{StaticResource ResourceKey=Background10}" ToolTip="View your customers." Height="92" HorizontalAlignment="Left" Margin="365,7,0,0" Name="btnCustomer" VerticalAlignment="Top" Width="92" Click="btnCustomer_Click" Grid.ColumnSpan="2"> </Button> <Button Background="{StaticResource ResourceKey=Background11}" ToolTip="Party orders coming soon.." Height="92" HorizontalAlignment="Left" Margin="250,6,0,0" Name="btnPartyOrders" VerticalAlignment="Top" Width="92" Click="btnPartyOrders_Click_1"> </Button> <Frame Height="900" HorizontalAlignment="Left" Name="frame1" VerticalAlignment="Stretch" Width="1480" NavigationUIVisibility="Hidden" Grid.ColumnSpan="2" Margin="6,104,0,6"></Frame> </Grid> </Grid> </Viewbox> </Window>
• با دو بار کلیک کردن بر روی هر دکمه ، وارد فضای جدید میشوید که در آنجا شما میتوانید eventای را برای آن دکمه تعریف کنید :
حال ، فرم ساده ای همانند زیر به آن اضافه میکنیم :
همانند زیر صفحه را مشخص کنید :
نام مناسبی برای آن انتخاب کنید :
چیزی که شما میخواهیم به عنوان نسخه برنامه نمایش داده شود را ، اضافه کنید :
Page2.Xaml :
<Page x:Class="The_Parcel.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="192" d:DesignWidth="469" Title="Page1"> <Grid Height="958" Width="604"> <Grid.ColumnDefinitions> <ColumnDefinition Width="7*" /> <ColumnDefinition Width="1169*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="361*" /> <RowDefinition Height="597*" /> </Grid.RowDefinitions> <RichTextBox SpellCheck.IsEnabled="True" Margin="4,8,0,43" Name="RichTextBox1" HorizontalAlignment="Left" VerticalAlignment="Center" Width="588" Height="310" FontSize="18" FontFamily="Tahoma" IsReadOnly="True" Grid.ColumnSpan="2" ScrollViewer.HorizontalScrollBarVisibility="Visible" > <FlowDocument> <Paragraph> <Bold FontFamily="Tahoma">Welcome To Parcel V 1.0 .</Bold> </Paragraph> </FlowDocument> </RichTextBox> </Grid> </Page>
• حال ، دوباره به Mainscreen.xaml.cs بروید و تکه کد زیر را به آن اضافه کنید :
private void btnHelp_Click(object sender, RoutedEventArgs e) { frame1.Source = new Uri("Page2.xaml", UriKind.Relative); }
کد نهایی Mainscrren.xaml.cs :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Data.SqlClient; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; namespace The_Parcel { /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class MainScreen : Window { // Uri iconUri = new Uri("pack://application:,,,/Icon1.ico", UriKind.RelativeOrAbsolute); //this.Icon = BitmapFrame.Create(iconUri); // public static string strconn = ConfigurationManager.ConnectionStrings["HotemManagement"].ConnectionString; // SqlConnection connection = new SqlConnection(strconn); public MainScreen() { InitializeComponent(); } private void btnOrder_Click(object sender, RoutedEventArgs e) { } private void btnEmpDetails_Click(object sender, RoutedEventArgs e) { } private void btnSMSEmail_Click(object sender, RoutedEventArgs e) { } private void btnCustomer_Click(object sender, RoutedEventArgs e) { } private void btnPartyOrders_Click_1(object sender, RoutedEventArgs e) { //frame1.Source = new Uri("Partorders.xaml", UriKind.Relative); MessageBox.Show("Coming Soon......."); } private void btnHelp_Click(object sender, RoutedEventArgs e) { frame1.Source = new Uri("Page2.xaml", UriKind.Relative); } private void btnInventory_Click(object sender, RoutedEventArgs e) { } } }
خروجی برنامه بصورت زیر خواهد بود :
- WPF
- 3k بازدید
- 1 تشکر