我是一名软件开发人员,我的学校项目正在搜索在 Base 视图中加载不同视图的解决方案。
我有一个UWP应用程序,它运行在Raspberry Pi上
对于我的应用程序,我需要在两个用户(常规用户和专家用户)之间进行导航。
那我的问题是什么?
如何在两个用户之间切换,但没有重新加载视图(页面)?
视图无法刷新,因为内容是实时的,并且在用户视图之间切换时也必须运行。
这是一个C#Uwp应用程序。 现在我有文件:
感谢。
答案 0 :(得分:0)
您可以将ContentPresenter放入BaseView。 然后将AView和BView包装到数据模板中。现在,您可以使用转换器选择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();
}
}
答案 1 :(得分:0)
您可以在BaseView.xaml文件中根据需要同时拥有这两种视图。你有两个网格 - 一个用于AView,另一个用于BView,然后最终根据你的用户标准隐藏/显示两个网格的可见性。
干杯!