[英]WPF Prism Navigation from third view
我創建了一個菜單列表用戶控件,現在我希望每個菜單將我的主窗口導航到另一個視圖。 如何從第三個視圖(如菜單用戶控件)調用 2 個視圖之間的導航?
我的主窗口代碼后面可以定義菜單項:
public partial class MainDashboard : Window
{
public MainDashboard()
{
InitializeComponent();
var menuRegister = new List<SubItem>();
menuRegister.Add(new SubItem("Line List"));
menuRegister.Add(new SubItem("Isometric List"));
menuRegister.Add(new SubItem("Joint History"));
menuRegister.Add(new SubItem("MTO"));
menuRegister.Add(new SubItem("Welding"));
menuRegister.Add(new SubItem("RT"));
menuRegister.Add(new SubItem("PWHT"));
menuRegister.Add(new SubItem("PT"));
menuRegister.Add(new SubItem("Phase Array"));
menuRegister.Add(new SubItem("Painting"));
var menuRegister2 = new List<SubItem>();
menuRegister2.Add(new SubItem("Indicator"));
menuRegister2.Add(new SubItem("User Settings"));
var item0 = new ItemMenu("Dashboard", new UserControl(), PackIconKind.ViewDashboard);
var item1 = new ItemMenu("Piping", menuRegister, PackIconKind.Pipe);
var item2 = new ItemMenu("Admin Section", menuRegister2, PackIconKind.AccountCog);
menu.Children.Add(new UserControlMenuItem(item0,this));
menu.Children.Add(new UserControlMenuItem(item1,this));
menu.Children.Add(new UserControlMenuItem(item2,this));
}
private void btn_exit_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
}
我的 UserControl 菜單代碼隱藏,我想通過文本塊點擊事件以某種方式執行導航:
public partial class UserControlMenuItem : UserControl
{
public UserControlMenuItem(ItemMenu itemMenu,MainDashboard parentform)
{
InitializeComponent();
ExpanderMenu.Visibility = itemMenu.SubItems == null ? Visibility.Collapsed : Visibility.Visible;
ListMenuItem.Visibility = itemMenu.SubItems == null ? Visibility.Visible : Visibility.Collapsed;
this.DataContext = itemMenu;
}
private void TextBlock_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var tb = sender as TextBlock;
switch (tb.Text)
{
case "User Settings":
break;
default:
//what you want when nothing is selected
break;
}
}
}
public partial class UserControlMenuItem : UserControl
{
private MainDashboard parentform;
public UserControlMenuItem(ItemMenu itemMenu,MainDashboard parentform)
{
InitializeComponent();
ExpanderMenu.Visibility = itemMenu.SubItems == null ? Visibility.Collapsed : Visibility.Visible;
ListMenuItem.Visibility = itemMenu.SubItems == null ? Visibility.Visible : Visibility.Collapsed;
this.DataContext = itemMenu;
this.parentform = parentform;
}
private void TextBlock_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var tb = sender as TextBlock;
switch (tb.Text)
{
case "User Settings":
You can call any method on another window. Through variable
parentform
break;
default:
//what you want when nothing is selected
break;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.