C# - UWP:在一个基本视图中加载不同的视图

C# - UWP: Load different view in one base views

我是一名软件开发学生,对于我的学校项目,我正在寻找在 Base 视图中加载不同 Views 的解决方案。 我有一个 UWP 应用程序,运行s 在 Raspberry Pi.
上 对于我的应用程序,我需要在两个用户(普通用户和专家用户)之间导航。

那么我的问题是什么?
如何在不重新加载视图(页面)的情况下在两个用户之间切换?
视图无法刷新,因为内容是实时的,并且当您在用户视图之间切换时也必须 运行。

它是一个 C# Uwp 应用程序。 现在我有文件:

也许有人可以帮助我吗?

谢谢。

您可以将 ContentPresenter 放入您的 BaseView 中。 然后将您的 AView 和 BView 包装到数据模板中。现在您可以使用转换器 select ContentPresenter 显示的模板。

<Page>
    <Page.Resources>
        <DataTemplate x:Key="AViewTemplate">
            <views:AView />
        </DataTemplate>
        <DataTemplate x:Key="BViewTemplate">
            <views:BView />
        </DataTemplate>
        <conv:ModeToTemplateConverter ATemplate="{StaticResource AViewTemplate}" BTemplate="{StaticResource BViewTemplate}" />
    </Page.Resources>

    <ContentPresenter Content="{Binding YourViewModel}" 
                      ContentTemplate="{Binding Mode, Converter={StaticResource ModeToTemplateConverter}}" />
</Page>

转换器可以是这样的:

    public class ModeToTemplateConverter : IValueConverter
    {
        public DataTemplate ATemplate { get; set; }

        public DataTemplate BTemplate { get; set; }

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var mode = value as Mode?;
            switch (mode)
            {
                case Mode.A:
                    return ATemplate;
                case Mode.B:
                    return BTemplate;
                default:
                    return null;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

您可以根据需要在 BaseView.xaml 文件中同时使用这两种视图。您在那里维护 2 个网格 - 一个用于 AView,另一个用于 BView,然后最终根据您的用户标准 hide/show 两个网格的可见性。

干杯!