在棱镜中使用masterdetailview实现UWP弹出分割视图?

时间:2016-07-03 18:52:51

标签: xamarin.forms uwp prism master-detail splitview

我是xamarin的完整菜鸟:)

所以想知道是否有人能指出我正确的资源。

简而言之,我想使用Xamarin MasterDetailPage在棱镜中实现this之类的东西。

使用主要细节样本here,汉堡包菜单不会成为一个飞出。

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
              prism:ViewModelLocator.AutowireViewModel="True"
             x:Class="HelloWorld.Views.MyMasterDetail">

  <MasterDetailPage.Master>
    <ContentPage Title="Default">
      <StackLayout>
        <Button Text="ViewA" Command="{Binding NavigateCommand}" CommandParameter="MyNavigationPage/ViewA?id=A" />
        <Button Text="ViewB" Command="{Binding NavigateCommand}" CommandParameter="MyNavigationPage/ViewB?id=B" />
        <Button Text="ViewC" Command="{Binding NavigateCommand}" CommandParameter="MyNavigationPage/ViewC?id=C" />
      </StackLayout>
    </ContentPage>
  </MasterDetailPage.Master>

</MasterDetailPage>

现在,虽然有足够的空间,但它显示的内容类似于

(就像一个样本,我根本不使用SplitViewMenu)

enter image description here

我需要初始显示图标/一些小文字,点击汉堡包时,它应该展开(你知道就像第一个链接/凹槽音乐应用程序行为)。 enter image description here

提示?

2 个答案:

答案 0 :(得分:0)

  

现在,虽然有足够的空间,但它显示的内容类似于

根据我的经验,如果您为SimpleNavMenuItem分配了Symbol属性,可能的原因是您没有在Generic.xaml文件夹下导入主题文件Themes enter image description here

此文件包含自定义控件的模板,样式。例如,对于NavMenuItem的模板,需要在此处正确分配FontIcon的Glyph属性:

<DataTemplate x:Key="NavMenuItemTemplate">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="48" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <FontIcon FontSize="16" Glyph="{Binding Path=SymbolAsChar}" VerticalAlignment="Center"
                      HorizontalAlignment="Center" ToolTipService.ToolTip="{Binding Path=Label}" />
            <TextBlock Grid.Column="1" Text="{Binding Path=Label}" VerticalAlignment="Center" />
        </Grid>
    </DataTemplate>

虽然SimpleNavMenuItem类的SymbolAsChar属性基于Symbol的值:

public sealed class SimpleNavMenuItem : INavigationMenuItem
{
        ......
        public Symbol Symbol { get; set; }
        public char SymbolAsChar => (char) Symbol;
        ......
}

如果你仍然可以使它工作,请分享一个演示:)

答案 1 :(得分:0)

我自己一直在寻找类似的东西,因为当我在Windows 10移动设备上运行它时,我无法隐藏MasterDetailPage主页面中显示的NavigationBar(我可以隐藏PC虽然)。所以基本上,我正在研究最终构建我自己版本的MasterDetailPage。

由于我还没有构建它,我无法告诉你如何实现你所要求的,但我知道它需要你:

  1. 为MasterDetailView或
  2. 编写自己的自定义渲染器
  3. 编写新控件及其渲染器
  4. 在这两种情况下,渲染器都将涉及创建和操作新的SplitView(这是您的SplitViewMenu示例正在扩展的本机UWP控件)。有一个用于创建实际UWP控件here的教程。如果您还没有了解过Xamarin的渲染器,那么他们就是&#34; Translator&#34;和#34;口译员&#34;在Xamarin.Forms控件和给定平台的本机控件之间。我怀疑Xamarin最终将为UWP重写他们的MastDetailPage渲染器,以使用SplitView作为基础,但谁知道什么时候会这样。 Xamarin还在GitHub上为Xamarin.Forms(以及其他人)提供了一个开源SDK,因此您可以为UWP学习MasterDetailPageRenderer。