【问题标题】:MasterDetailPage "Split" in UWPUWP 中的 MasterDetailPage“拆分”
【发布时间】:2019-01-14 18:41:31
【问题描述】:

我正在使用 Xamarin.Forms (v. 3.4.0.1008975) 在 Windows 10 (1809) 上构建 UWP 应用。

我想创建一个具有拆分行为的 MasterDetailPage(一个固定的导航菜单,始终显示在左侧,内容页面显示在右侧)。这记录在here。

使用可用的示例代码 here,我已将 MasterBehavior="Split" 添加到 MasterDetailPageNavigation 项目的 XAML/MainPage.xaml 文件中:

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
              xmlns:local="clr-namespace:MasterDetailPageNavigation;assembly=MasterDetailPageNavigation"
              x:Class="MasterDetailPageNavigation.MainPage"
              MasterBehavior="Split">

我希望在左侧看到一个固定的导航菜单,在右侧显示一个内容页面。但是,生成的 UWP 应用继续显示“弹出”行为(菜单在内容页面上滑入和滑出)。

如何获得带有固定(不移动)菜单的 MasterDetailPage?

【问题讨论】:

  • 您使用的是什么版本的 XF?
  • 更新了 XF 版本 3.4.0.1008975 的问题
  • 您的问题解决了吗?
  • 是的,解决了。我忽略了代码隐藏中的行。

标签: xamarin.forms uwp


【解决方案1】:

请检查您提供的示例中的MainPage 代码。 MasterBehavior 是在 MainPage 构造函数中设置的。它会在 Xaml 初始化后被调用。所以Split 行为将被覆盖。

public partial class MainPage : MasterDetailPage
{
    public MainPage()
    {
        InitializeComponent();

        masterPage.listView.ItemSelected += OnItemSelected;

        if (Device.RuntimePlatform == Device.UWP)
        {
            MasterBehavior = MasterBehavior.Popover;
        }
    }

    void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var item = e.SelectedItem as MasterPageItem;
        if (item != null)
        {
            Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
            masterPage.listView.SelectedItem = null;
            IsPresented = false;
        }
    }
}

如果您想使用Split 行为,您可以修改以下行。并从 xaml 中删除 MasterBehavior="Popover"。

if (Device.RuntimePlatform == Device.UWP)
{
    MasterBehavior = MasterBehavior.Split;
}

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2017-11-07
    • 2018-11-27
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多