在WPF中创建可扩展的“应用程序分组/集线器”

问题描述 投票:0回答:1

我想找到一种在WPF(C#)中为应用程序创建“中心”的优雅方法。

我的意思是,比方说,我有三个应用程序AppA,AppB和AppC,它们可能各自具有非常不同的UI(和逻辑),我想要实现的是,有一个“登陆页面”,其中包含每个这三个应用程序。现在,当用户点击其中一个图标时,“整体应用程序”会将用户重定向到该特定点击应用程序的UI。

我可以想到两种方法来实现这个目标:

1)让MainWindow有3个图像,并在ImageA_Click上 - >出现另一个窗口,其中包含AppA的UI。

2)使用带有3个选项卡的Tabcontrol的MainWindow(每个选项卡对应3个应用程序中的每一个) - >单击一个选项卡将用户定向到单击应用程序的特定UI。

我想要的是拥有一个可扩展的架构,意思是,明天,我必须开发另外10个应用程序,我希望能够快速(并且轻松地)在整个解决方案中集成额外的10个应用程序。

实现这一目标的最佳方法是什么?

(请注意,我正在为每个应用程序使用MVC模式 - 不确定这是否有所不同)

我感谢任何帮助!

c# wpf architecture grouping
1个回答
1
投票

您可以在单独的页面中设计每个应用程序,然后使用框架和导航服务访问它们。像这样:

MainWindow.xaml:

<Window x:Class="Test.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"
        Loaded="MainWindow_OnLoaded">
    <Grid>
        <Frame Name="MainFrame"/>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace Test
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
        {
             MainFrame.NavigationService.Navigate(new HomePage());
             // OR
             MainFrame.NavigationService.Navigate(new App1Page());
             // OR
             MainFrame.NavigationService.Navigate(new App2Page());
             // OR
             MainFrame.NavigationService.Navigate(new App3Page());
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.