تفاوت بین Page و Window در WPF چیست

مقاله‌ای با عنوان "فرق بین Page و Window در WPF چیست؟"، که به بررسی تفاوت‌ها و کاربردهای Page و Window در Windows Presentation Foundation (WPF) می‌پردازد...

انتشار: , زمان مطالعه: 6 دقیقه
تفاوت بین Page و Window در WPF چیست؟
دسته بندی: برنامه نویسی تعداد بازدید: 215

تفاوت بین Page و Window در WPF چیست؟

مقاله‌ای با عنوان "فرق بین Page و Window در WPF چیست؟"، که به بررسی تفاوت‌ها و کاربردهای Page و Window در Windows Presentation Foundation (WPF) می‌پردازد، می‌تواند برای توسعه‌دهندگان نرم‌افزاری که با این فناوری کار می‌کنند بسیار مفید باشد. در این مقاله، از کلمات کلیدی مرتبط برای بهبود سئو استفاده خواهیم کرد.

مقدمه

Windows Presentation Foundation (WPF) یک چارچوب قدرتمند برای ساخت برنامه‌های دسکتاپ در محیط .NET است. دو کمپوننت اصلی در ساخت رابط کاربری در WPF، Window و Page هستند. این دو، هرچند که در ظاهر مشابه به نظر می‌رسند، کاربردها و ویژگی‌های متفاوتی دارند.

تعریف Window و Page

Window: Window در WPF به عنوان کانتینر اصلی برای کاربرد استفاده می‌شود. این کمپوننت می‌تواند به عنوان پنجره اصلی برنامه، پنجره‌های فرعی یا دیالوگ‌ها استفاده شود. Window مسئول مدیریت ظاهر برنامه و نحوه تعامل کاربر با سیستم‌عامل است.

Page: Page در WPF، یک کمپوننت است که برای ساخت برنامه‌های چند صفحه‌ای به کار می‌رود. این کمپوننت معمولاً در یک Frame قرار می‌گیرد و امکان ناوبری مانند وب سایت‌ها را فراهم می‌کند. Page برای ساخت سناریوهایی که نیاز به چندین محتوا و ناوبری بین آن‌ها دارند، ایده‌آل است.

تفاوت‌های کلیدی بین Window و Page

  1. مدیریت ناوبری:

    • Window نمی‌تواند به صورت خودکار بین محتویات ناوبری کند.
    • Page با استفاده از NavigationService، امکان ناوبری داخلی را فراهم می‌کند.
  2. موارد استفاده:

    • Window معمولاً برای ساخت برنامه‌های با یک صفحه اصلی که نیاز به پنجره‌های متعدد دارند، استفاده می‌شود.
    • Page برای برنامه‌هایی که شبیه به یک وب سایت چند صفحه‌ای هستند و نیاز به ناوبری داخلی دارند، مناسب است.
  3. وابستگی به کانتینر:

    • Window می‌تواند به صورت مستقل عمل کند.
    • Page برای نمایش به Frame نیاز دارد.

 

انتخاب بین Window و Page در WPF بستگی به نیازهای خاص پروژه دارد. اگر نیاز به ناوبری داخلی و چند صفحه‌ای است، Page انتخاب بهتری است. در مقابل، اگر برنامه نیاز به چندین پنجره مستقل دارد، استفاده از Window توصیه می‌شود. در هر صورت، درک این تفاوت‌ها و کاربردهای آن‌ها می‌تواند به توسعه‌دهندگان کمک کند تا راه‌حل‌های موثرتری برای پروژه‌های خود پیاده‌سازی کنند.

مثالی از استفاده Page ها در  Window

برای استفاده از Page ها در Window در WPF، ما باید یک Frame درون Window قرار دهیم و سپس صفحات مختلفی را به عنوان محتوای این Frame تعیین کنیم. این اجازه می‌دهد که کاربران بتوانند بین صفحات مختلف ناوبری کنند. در اینجا یک نمونه ساده ارائه شده است که نشان می‌دهد چگونه می‌توان چندین Page را در یک Window استفاده کرد.

1. ایجاد صفحات (Pages)

ابتدا، دو صفحه برای نمونه ایجاد می‌کنیم. هر صفحه یک متن ساده را نمایش می‌دهد.

HomePage.xaml

<Page x:Class="WpfApp.HomePage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="HomePage">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="This is the Home Page" FontSize="20"/>
    </StackPanel>
</Page>

SecondPage.xaml

<Page x:Class="WpfApp.SecondPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="SecondPage">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="This is the Second Page" FontSize="20"/>
    </StackPanel>
</Page>

2. ایجاد MainWindow

در MainWindow.xaml، یک Frame قرار می‌دهیم و دکمه‌هایی برای ناوبری بین صفحات اضافه می‌کنیم.

MainWindow.xaml

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
            <Button Content="Home" Margin="5" Click="HomeButton_Click"/>
            <Button Content="Second Page" Margin="5" Click="SecondButton_Click"/>
        </StackPanel>
        <Frame x:Name="MainFrame" NavigationUIVisibility="Hidden"/>
    </DockPanel>
</Window>

3. کد بک‌اند (MainWindow.xaml.cs)

در پشت صحنه، کد برای ناوبری بین صفحات را می‌نویسیم.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        MainFrame.Content = new HomePage();
    }

    private void HomeButton_Click(object sender, RoutedEventArgs e)
    {
        MainFrame.Navigate(new HomePage());
    }

    private void SecondButton_Click(object sender, RoutedEventArgs e)
    {
        MainFrame.Navigate(new SecondPage());
    }
}

در این کد، هنگامی که کاربر بر روی دکمه‌ها کلیک می‌کند، MainFrame به صفحات مختلف ناوبری می‌کند. این نمونه نشان می‌دهد که چگونه می‌توان از Page ها درون Window برای ایجاد برنامه‌ای با ناوبری داخلی استفاده کرد.

می توان در SecondPage.xaml دکمه ای به کاربر د  تا محتوای MainFrame را تغییر دهد ؟

بله، می‌توانید در SecondPage.xaml دکمه‌ای قرار دهید که به کاربر اجازه دهد محتوای MainFrame را تغییر دهد. این کار را می‌توان با استفاده از رویداد کلیک دکمه و ارسال پیام به MainWindow برای تغییر محتوا انجام داد. برای انجام این کار، نیاز به ارتباط بین صفحه فعلی (SecondPage) و ویندو کنترل‌کننده‌ی آن (MainWindow) است.

1. تعریف دکمه در SecondPage.xaml

ابتدا، دکمه‌ای به SecondPage اضافه می‌کنیم که هنگام کلیک، عملیاتی را انجام دهد:

SecondPage.xaml

<Page x:Class="WpfApp.SecondPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="SecondPage">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="This is the Second Page" FontSize="20"/>
        <Button Content="Go to Third Page" Margin="10" Click="GoToThirdPage_Click"/>
    </StackPanel>
</Page>

2. تعریف عملکرد دکمه در SecondPage.xaml.cs

حالا در کد بک‌اند صفحه، تابعی تعریف می‌کنیم که هنگام کلیک روی دکمه فراخوانی شود. این تابع به MainWindow دسترسی پیدا می‌کند و MainFrame را به یک صفحه‌ی جدید ناوبری می‌دهد:

SecondPage.xaml.cs

public partial class SecondPage : Page
{
    public SecondPage()
    {
        InitializeComponent();
    }

    private void GoToThirdPage_Click(object sender, RoutedEventArgs e)
    {
        var mainWindow = (MainWindow)Window.GetWindow(this);
        mainWindow.ChangeMainFrameContent(new ThirdPage());
    }
}

3. اضافه کردن متد در MainWindow

برای کامل کردن این قابلیت، باید یک متد در کلاس MainWindow اضافه کنید که امکان تغییر محتوای MainFrame را فراهم می‌کند:

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public void ChangeMainFrameContent(Page newPage)
    {
        MainFrame.Navigate(newPage);
    }
}

4. ایجاد صفحه جدید ThirdPage.xaml

مطمئن شوید که ThirdPage را نیز به پروژه اضافه کرده‌اید، تا دکمه‌ی "Go to Third Page" کار کند:

ThirdPage.xaml

<Page x:Class="WpfApp.ThirdPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="ThirdPage">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="This is the Third Page" FontSize="20"/>
    </StackPanel>
</Page>

با این روش، SecondPage می‌تواند محتوای MainFrame را در MainWindow به صفحه‌ی دیگری تغییر دهد، و این امکان را به کاربر می‌دهد که بین چند صفحه ناوبری کند.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)