簡體   English   中英

從第三個角度看 WPF 棱鏡導航

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM