Windows Presentation Foundation (WPF), UWP (Universal Windows Platform), এবং WinUI অ্যাপ্লিকেশন তৈরি করার সময় Navigation History এবং Back/Forward Button-এর মাধ্যমে ব্যবহারকারীর গতিবিধি ট্র্যাক করা এবং নেভিগেশন ইতিহাস বজায় রাখা একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এই টিউটোরিয়ালে Navigation History এবং Back/Forward Buttons কিভাবে কার্যকরভাবে ইমপ্লিমেন্ট করা যায় তা দেখানো হবে।
Navigation History কী?
Navigation History ব্যবহারকারী যখন অ্যাপ্লিকেশনে বিভিন্ন পৃষ্ঠায় (Pages) নেভিগেট করেন, তখন সেগুলোর একটি ইতিহাস তৈরি হয়। এই ইতিহাস ব্যবহারকারীকে Back এবং Forward বাটন ব্যবহার করে পূর্ববর্তী পৃষ্ঠায় ফিরে যেতে বা পরবর্তী পৃষ্ঠায় যেতে সাহায্য করে।
Back/Forward Button Implementation
WPF, UWP বা WinUI এ Back এবং Forward বাটন ইমপ্লিমেন্ট করার জন্য NavigationService বা Frame ব্যবহার করা হয়। চলুন দেখা যাক কিভাবে Back এবং Forward বাটন কার্যকরভাবে ইমপ্লিমেন্ট করা যায়।
WPF Example: Back and Forward Button Using NavigationService
WPF-এ Frame কন্ট্রোল ব্যবহার করে পেজ নেভিগেশন এবং ইতিহাস পরিচালনা করা হয়। Back এবং Forward বাটন ব্যবহারকারীকে সহজে পূর্ববর্তী বা পরবর্তী পৃষ্ঠায় নেভিগেট করতে সাহায্য করে।
Step 1: Page Navigation Setup
MainWindow.xaml:
<Window x:Class="NavigationHistoryExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Navigation History Example" Height="350" Width="525">
<Grid>
<Frame Name="mainFrame" NavigationUIVisibility="Hidden" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
<Button Content="Back" Click="BackButton_Click" Width="100" Margin="10"/>
<Button Content="Forward" Click="ForwardButton_Click" Width="100" Margin="10"/>
</StackPanel>
</Grid>
</Window>
Step 2: Back and Forward Button Code
MainWindow.xaml.cs:
using System.Windows;
namespace NavigationHistoryExample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
mainFrame.Navigate(new Page1());
}
private void BackButton_Click(object sender, RoutedEventArgs e)
{
if (mainFrame.CanGoBack)
{
mainFrame.GoBack();
}
}
private void ForwardButton_Click(object sender, RoutedEventArgs e)
{
if (mainFrame.CanGoForward)
{
mainFrame.GoForward();
}
}
}
}
Step 3: Create Pages for Navigation
Page1.xaml:
<Page x:Class="NavigationHistoryExample.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page1">
<Grid>
<Button Content="Go to Page 2" Click="GoToPage2_Click" Width="100" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Page>
Page1.xaml.cs:
using System.Windows;
namespace NavigationHistoryExample
{
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}
private void GoToPage2_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new Page2());
}
}
}
Page2.xaml:
<Page x:Class="NavigationHistoryExample.Page2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page2">
<Grid>
<Button Content="Go to Page 1" Click="GoToPage1_Click" Width="100" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Page>
Page2.xaml.cs:
using System.Windows;
namespace NavigationHistoryExample
{
public partial class Page2 : Page
{
public Page2()
{
InitializeComponent();
}
private void GoToPage1_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new Page1());
}
}
}
Step 4: Explanation
- mainFrame.Navigate: প্রথমে Page1 এ নেভিগেট করে।
- BackButton_Click: GoBack() ব্যবহার করে previous page-এ ফিরে যায়।
- ForwardButton_Click: GoForward() ব্যবহার করে next page-এ চলে যায়।
- NavigationService: এটি WPF পেজ নেভিগেশনের জন্য ব্যবহৃত প্রধান ক্লাস, যা নেভিগেশন ইতিহাস পরিচালনা করে।
UWP Example: Back and Forward Button Using Frame
UWP-এ পেজ নেভিগেশন খুব সহজ এবং Frame কন্ট্রোল ব্যবহার করে Back/Forward বাটন ইমপ্লিমেন্ট করা হয়।
Step 1: Page Navigation Setup
MainPage.xaml:
<Page
x:Class="NavigationHistoryExample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Go to Page 2" Click="GoToPage2_Click"/>
<Button Content="Back" Click="BackButton_Click" Margin="10"/>
<Button Content="Forward" Click="ForwardButton_Click" Margin="10"/>
</StackPanel>
</Page>
Step 2: Code Behind
MainPage.xaml.cs:
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace NavigationHistoryExample
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void GoToPage2_Click(object sender, RoutedEventArgs e)
{
this.Frame.Navigate(typeof(Page2));
}
private void BackButton_Click(object sender, RoutedEventArgs e)
{
if (this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
}
private void ForwardButton_Click(object sender, RoutedEventArgs e)
{
if (this.Frame.CanGoForward)
{
this.Frame.GoForward();
}
}
}
}
Key Methods for Navigation
- CanGoBack: এটি চেক করে যে, ব্যবহারকারী পূর্ববর্তী পৃষ্ঠায় ফিরে যেতে পারবেন কিনা।
- CanGoForward: এটি চেক করে যে, ব্যবহারকারী পরবর্তী পৃষ্ঠায় যেতে পারবেন কিনা।
- GoBack(): এটি ব্যবহারকারীকে পূর্ববর্তী পৃষ্ঠায় নিয়ে যায়।
- GoForward(): এটি ব্যবহারকারীকে পরবর্তী পৃষ্ঠায় নিয়ে যায়।
Conclusion
Navigation History এবং Back/Forward Buttons ব্যবহারকারীর গতিবিধি এবং নেভিগেশন ইতিহাস পরিচালনার জন্য অপরিহার্য বৈশিষ্ট্য। WPF এবং UWP অ্যাপ্লিকেশনগুলিতে এই ফিচারটি কার্যকরভাবে ইমপ্লিমেন্ট করা যায়, যা ব্যবহারকারীর জন্য একটি উন্নত এবং ইন্টারেক্টিভ অভিজ্ঞতা তৈরি করে। XAML এবং C# এর মাধ্যমে সহজে এই ফিচারটি ইমপ্লিমেন্ট করা সম্ভব।
Read more