【问题标题】:Xamarin - MasterDetailPage can not call from any PageXamarin - MasterDetailPage 无法从任何页面调用
【发布时间】:2019-05-19 01:15:40
【问题描述】:

我无法调用 MasterDetailForm 的详细信息。代码正在运行但不显示。 我能怎么做? “PageLog:单击按钮打开 PageReg” 我对汉堡菜单没有意见。问题是,我无法从不同的页面访问。

MainPage.xml.cs

public partial class MainPage : MasterDetailPage
{
    ... // Main functions...
    public void ExportMDP() // Open new content
    {
        Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(PageReg)));
        IsPresented = false;
    }
}

PageLog.xml.cs

public partial class PageLog : ContentPage
{
    ...
    void RegClick(object sender, EventArgs args) // Button Click
    {
        var x = new project.MainPage();
        x.ExportMDP();
    }
}

【问题讨论】:

  • 您需要在已经存在的 MainPage 实例上调用 ExportMDP,而不是您在内存中创建但实际上并未显示在屏幕上的新实例
  • 我需要例子...
  • 我对 Hamburgermenu 没有意见

标签: c# android xamarin


【解决方案1】:

根据你的描述,如果你想从其他内容页面调用masterdetailPage,你可以使用Navigation.PushModalAsync()方法来做到这一点。

Navigation.PushModalAsync(new MastDetailPage());

您可以在 MasterDetailPage 中导航详细信息页面。

这是 MastDetailPage:

 <MasterDetailPage.Master>
    <local:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
    <NavigationPage>
        <x:Arguments>
            <local:ContactsPage />
        </x:Arguments>
    </NavigationPage>
</MasterDetailPage.Detail>

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;
        }
    }
}

这里是 MastPage:

  <StackLayout>

    <ListView x:Name="listView" x:FieldModifier="public">
       <ListView.ItemsSource>
            <x:Array Type="{x:Type local:MasterPageItem}">
                <local:MasterPageItem Title="Contacts" IconSource="contacts.png" TargetType="{x:Type local:ContactsPage}" />
                <local:MasterPageItem Title="TodoList" IconSource="todo.png" TargetType="{x:Type local:TodoListPage}" />
                <local:MasterPageItem Title="Reminders" IconSource="reminders.png" TargetType="{x:Type local:ReminderPage}" />
            </x:Array>
        </ListView.ItemsSource>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid Padding="5,10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="30"/>
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Image Source="{Binding IconSource}" />
                        <Label Grid.Column="1" Text="{Binding Title}" />
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2019-03-17
    • 2020-07-30
    • 2017-07-16
    • 2020-01-02
    • 2017-08-01
    • 2017-11-06
    • 2015-11-03
    相关资源
    最近更新 更多