Xaml Xamarin表单-在工具栏项中显示取消按钮而不是返回(iOS)
我想将iOS上导航栏中的标准Xaml Xamarin表单-在工具栏项中显示取消按钮而不是返回(iOS),xaml,xamarin.forms,Xaml,Xamarin.forms,我想将iOS上导航栏中的标准Back按钮更改为Cancel按钮,就像iOS中的“New contact”(新联系人)屏幕一样。 我正在使用Xamarin表单 编辑: 模态的XAML <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xrm.M
Back
按钮更改为Cancel
按钮,就像iOS中的“New contact”(新联系人)屏幕一样。我正在使用
Xamarin表单
编辑:
模态的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>
在执行导航推送的页面的构造函数中执行以下操作。这将适用于推送到堆栈上的所有页面
NavigationPage.SetBackButtonTitle(this, "Cancel");
当这是内容页(或任何类型的页面)时,实现请求的标准惯例当然是使用。您可以在上找到将工具栏项应用于页面的示例 如果你需要一个更具体的例子,请告诉我
用示例更新 这两个工具栏项目希望如此:
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
};
请记住,否则将不会显示工具栏项
希望这有帮助。我将此代码包含在构造函数中,但不起作用。我的视图构造函数仅包含bindingContext、代码和InitializeComponent()。你有进一步的想法吗?我读过一些Xamarin形式的东西,这是不可能的…谢谢。我已经在显示模式,现在我正在努力将工具栏项目添加到屏幕顶部。我想添加“取消”和“完成”,我已经用一个代码示例更新了我的答案。请记得投票支持我的答案,如果它对你有帮助,请将其标记为“接受”。谢谢。只是一个简短的问题,@gjfonte:您需要Xaml或代码隐藏(C#)方面的帮助吗?如果您在问题中更清楚地说明了这一点,而不是简单地标记“xaml”,那就好了,只是一个简短的提示:如果您的模式没有包装在导航页面中,您的工具栏项目将不会显示:感谢David的提示和建议。我已经编辑了我的问题,包括视图示例。我现在如何将
取消
按钮移到左侧?@gjfonte不幸的是,Xamarin目前不支持这一点,但是,希望我们能看到表单的未来版本发生变化。目前,唯一要做的就是制作一个自定义渲染器,正如上面讨论中所建议的那样。祝你好运
doneItem.Clicked += (object sender, System.EventArgs e) =>
{
// Perform action
};