C# - UWP:在一个基本视图中加载不同的视图
C# - UWP: Load different view in one base views
我是一名软件开发学生,对于我的学校项目,我正在寻找在 Base 视图中加载不同 Views 的解决方案。
我有一个 UWP 应用程序,运行s 在 Raspberry Pi.
上
对于我的应用程序,我需要在两个用户(普通用户和专家用户)之间导航。
那么我的问题是什么?
如何在不重新加载视图(页面)的情况下在两个用户之间切换?
视图无法刷新,因为内容是实时的,并且当您在用户视图之间切换时也必须 运行。
它是一个 C# Uwp 应用程序。
现在我有文件:
- BaseView.xaml(这是我要加载 Aview 或 Bview 的(主)视图)
- AView.xaml
- BView.xaml
也许有人可以帮助我吗?
谢谢。
您可以将 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 两个网格的可见性。
干杯!
我是一名软件开发学生,对于我的学校项目,我正在寻找在 Base 视图中加载不同 Views 的解决方案。
我有一个 UWP 应用程序,运行s 在 Raspberry Pi.
上
对于我的应用程序,我需要在两个用户(普通用户和专家用户)之间导航。
那么我的问题是什么?
如何在不重新加载视图(页面)的情况下在两个用户之间切换?
视图无法刷新,因为内容是实时的,并且当您在用户视图之间切换时也必须 运行。
它是一个 C# Uwp 应用程序。 现在我有文件:
- BaseView.xaml(这是我要加载 Aview 或 Bview 的(主)视图)
- AView.xaml
- BView.xaml
也许有人可以帮助我吗?
谢谢。
您可以将 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 两个网格的可见性。
干杯!