【问题标题】:Xamarin Forms - Show Cancel button in toolbar items instead of Back (iOS)Xamarin Forms - 在工具栏项目中显示取消按钮而不是返回 (iOS)
【发布时间】:2015-08-24 09:09:45
【问题描述】:

我想将 iOS 上 NavigationBar 中的标准 Back 按钮更改为 Cancel 按钮,例如 iOS 中的“新联系人”屏幕。
我正在使用Xamarin Forms

编辑:

模态的XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="Xrm.Mca.Views.MyModalView">

    <ContentPage.ToolbarItems>
            <ToolbarItem x:Name="Cancel" Text="Cancel" ></ToolbarItem>  
            <ToolbarItem x:Name="Save" Text="Save" ></ToolbarItem>  
    </ContentPage.ToolbarItems>

    <ContentPage.Content>

        <TableView Intent="Form">
            <TableRoot>
                <TableSection Title="Details">
                    <EntryCell Label="Name" Placeholder="Entry your name" />
                    <EntryCell Label="Age" Placeholder="Entry your age" />
                </TableSection>
            </TableRoot>
        </TableView>

    </ContentPage.Content>

</ContentPage>

在前一个屏幕中隐藏代码以打开模式

async Task OpenModal()
{
    var page = new NavigationPage(new MyModalView ());
    await App.Current.Navigation.PushModalAsync (page);
}

【问题讨论】:

    标签: xaml xamarin.forms


    【解决方案1】:

    在进行导航推送的页面的构造函数中执行以下操作。这适用于所有推入堆栈的页面。

    NavigationPage.SetBackButtonTitle(this, "Cancel");
    

    当然这是 ContentPage(或任何类型的页面)

    【讨论】:

    • 我将这段代码包含在构造函数中并且不起作用。我的视图构造函数只包含 bindingContext、您的代码和 InitializeComponent()。你有进一步的想法吗?我在 Xamarin Form 中读到了一些不可能的内容......
    【解决方案2】:

    完成您的请求的标准约定是push a Modal 并使用ToolBarItems。您可以在 Xamarin Forums 上找到将 ToolBarItem 应用到您的页面的示例。

    如果您需要更具体的示例,请告诉我。


    更新示例

    这两个 ToolbarItem 会这样:

    var cancelItem = new ToolbarItem
    {
        Text = "Cancel"
    };
    
    var doneItem = new ToolbarItem
    {
        Text = "Done"
    };
    

    现在您可以将这些添加到您的视图中:

    this.ToolbarItems.Add(cancelItem);
    this.ToolbarItems.Add(doneItem);
    

    您甚至可以绑定 CommandProperty:

    doneItem.SetBinding(MenuItem.CommandProperty, "DoneClicked");
    

    或者只是在用户点击项目时处理事件:

    doneItem.Clicked += (object sender, System.EventArgs e) => 
    {
        // Perform action
    };
    

    记得wrap your Modal in a NavigationPage,否则ToolbarItems不会出现。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我已经在显示模式,现在我正在努力将 ToolbarItems 添加到屏幕顶部。我想添加“取消”和“完成”
    • 我已经用代码示例更新了我的答案。如果对您有帮助,请记住对我的答案进行投票并将其标记为“已接受”。谢谢。
    • 问个简单的问题,@gjfonte:您是否需要有关 Xaml 或 Code behind (C#) 的帮助?如果您在问题中更清楚地说明而不是简单地标记“xaml”,那就太好了另外,请注意:如果您的 Modal 未包含在 NavigationPage 中,则您的 ToolbarItems 将不会显示:stackoverflow.com/a/26651140/2399772跨度>
    • 感谢大卫的笔记和建议。我已经编辑了我的问题,包括 View 的例子。我现在如何将cancel 按钮移到左侧?
    • @gjfonte 不幸的是,Xamarin 目前不支持此功能,但 many people are complaining over this on the forums,因此希望我们能在即将到来的表单版本中看到变化。目前,唯一要做的就是制作自定义渲染器,正如上面讨论中所建议的那样。祝你好运!
    猜你喜欢
    • 2014-09-14
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2015-01-23
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多