একটি উইন্ডো অবজেক্ট যেমন শোনাচ্ছে ঠিক তেমন: এটি Window
আপনার অ্যাপ্লিকেশনের জন্য একটি নতুন । আপনি যখন একটি সম্পূর্ণ নতুন উইন্ডো পপ আপ করতে চান তখন আপনার এটি ব্যবহার করা উচিত। আমি প্রায়শই Window
ডাব্লুপিএফ-তে একের বেশি ব্যবহার করি না কারণ আমি আমার মূল উইন্ডোতে গতিশীল সামগ্রী রাখতে পছন্দ করি যা ব্যবহারকারীর ক্রিয়াকলাপের ভিত্তিতে পরিবর্তিত হয়।
একটি পৃষ্ঠাগুলি আপনার উইন্ডোর ভিতরে একটি পৃষ্ঠা। এটি বেশিরভাগ ওয়েব-ভিত্তিক সিস্টেমগুলির জন্য এক্সবিএপি এর মতো ব্যবহৃত হয়, যেখানে আপনার একক ব্রাউজার উইন্ডো রয়েছে এবং সেই উইন্ডোতে বিভিন্ন পৃষ্ঠা হোস্ট করা যেতে পারে। এছাড়া ব্যবহার করা যেতে পারে ন্যাভিগেশন অ্যাপ্লিকেশন মত sellmeadog বলেন ।
একজন UserControl একটি পুনর্ব্যবহারযোগ্য ব্যবহারকারী-নির্মিত নিয়ন্ত্রণ আপনার ইউআই তে একই ভাবে আপনার যদি অন্য কোন নিয়ন্ত্রণ যোগ হবে যোগ করতে পারেন। সাধারণত আমি UserControl
যখন আমি কিছু কাস্টম কার্যকারিতা (উদাহরণস্বরূপ, ক CalendarControl
) তৈরি করতে চাই বা যখন আমার কাছে প্রচুর পরিমাণে এক্সএএমএল কোড থাকে, যেমন View
এমভিভিএম ডিজাইন প্যাটার্নটি ব্যবহার করার সময় একটি তৈরি করি।
উইন্ডোগুলির মধ্যে নেভিগেট করার সময়, আপনি কেবল একটি নতুন Window
অবজেক্ট তৈরি করতে এবং এটি প্রদর্শন করতে পারেন
var NewWindow = new MyWindow();
newWindow.Show();
তবে আমি এই উত্তরটির শুরুতে বলেছি, আমি যদি সম্ভব হয় তবে একাধিক উইন্ডোজ পরিচালনা না করা পছন্দ করি।
আমার নেভিগেশনের পছন্দের পদ্ধতিটি হ'ল একটি ব্যবহার করে কিছু গতিশীল বিষয়বস্তু অঞ্চল তৈরি করা ContentControl
এবং UserControl
বর্তমান দৃশ্যের যা কিছু আছে তা সমেত এটি তৈরি করা।
<Window x:Class="MyNamespace.MainWindow" ...>
<DockPanel>
<ContentControl x:Name="ContentArea" />
</DockPanel>
</Window>
এবং আপনার নেভিগেট ইভেন্টে আপনি কেবল এটি ব্যবহার করে সেট করতে পারেন
ContentArea.Content = new MyUserControl();
তবে আপনি যদি ডব্লিউপিএফের সাথে কাজ করছেন তবে আমি এমভিভিএম ডিজাইনের ধরণটি উচ্চারণ করার পরামর্শ দেব। আমার ব্লগে আমার একটি খুব বেসিক উদাহরণ রয়েছে যা এই প্যাটার্নটি ব্যবহার করে আপনি এমভিভিএম ব্যবহার করে কীভাবে নেভিগেট করবেন তা চিত্রিত করে:
<Window x:Class="SimpleMVVMExample.ApplicationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SimpleMVVMExample"
Title="Simple MVVM Example" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:HomeViewModel}">
<local:HomeView /> <!-- This is a UserControl -->
</DataTemplate>
<DataTemplate DataType="{x:Type local:ProductsViewModel}">
<local:ProductsView /> <!-- This is a UserControl -->
</DataTemplate>
</Window.Resources>
<DockPanel>
<!-- Navigation Buttons -->
<Border DockPanel.Dock="Left" BorderBrush="Black"
BorderThickness="0,0,1,0">
<ItemsControl ItemsSource="{Binding PageViewModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Command="{Binding DataContext.ChangePageCommand,
RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
CommandParameter="{Binding }"
Margin="2,5"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
<!-- Content Area -->
<ContentControl Content="{Binding CurrentPageViewModel}" />
</DockPanel>
</Window>