1

我完全是 xamarin 的菜鸟 :)

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

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

使用此处的主详细信息示例,汉堡菜单不会作为飞出菜单。

<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)

在此处输入图像描述

我需要图标/一些小文本来显示最初和点击汉堡包,它应该展开(你知道就像第一个链接/凹槽音乐应用程序行为一样)。 在此处输入图像描述

提示?

4

2 回答 2

0

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

由于我还没有构建它,我不能确切地告诉你如何实现你的要求,但我知道它需要你:

  1. 为 MasterDetailView 编写您自己的自定义渲染器,或者,
  2. 编写一个新控件及其渲染器

在这两种情况下,您的渲染器都将涉及创建和操作新的 SplitView(这是您的 SplitViewMenu 示例正在扩展的本机 UWP 控件)。这里有一个创建实际 UWP 控件的教程。如果您还没有了解 Xamarin 的渲染器,它们是 Xamarin.Forms 控件和给定平台的本机控件之间的“翻译器”和“解释器”。我怀疑 Xamarin 最终会为 UWP 重写他们的 MastDetailPage 渲染器,以使用 SplitView 作为基础,但谁知道那会是什么时候。Xamarin 在 GitHub 上还有一个用于 Xamarin.Forms(以及其他)的开源 SDK,因此您可以研究 UWP 的 MasterDetailPageRenderer。

于 2016-07-29T15:59:52.903 回答
0

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

根据我的经验,如果您为 SimpleNavMenuItem 分配了 Symbol 属性,可能的原因是您没有在文件夹 Generic.xaml下导入 Themes 文件Themes在此处输入图像描述

该文件包括模板、自定义控件的样式。例如,对于 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;
        ......
}

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

于 2016-07-08T08:36:07.137 回答