<ContentPage x:Name="ContentPage"
<!-- rest of the tag -->
/>
代码隐藏**(添加工具栏项):
public partial class ExamplePage : ContentPage
{
public ExamplePage()
{
InitializeComponent();
BindingContext = this;
var saveToolbarItem = new ToolbarItem { Text = "Save" };
saveToolbarItem.Clicked += YourMethodToBeRan;
ContentPage.ToolbarItems.Add(saveToolbarItem);
}
public ExamplePage(Object object)
{
InitializeComponent();
BindingContext = this;
var updateToolbarItem = new ToolbarItem { Text = "Update" };
updateToolbarItem.Clicked += YourMethodToBeRan;
var deleteToolbarItem = new ToolbarItem { Text = "Delete" };
deleteToolbarItem.Clicked += YourMethodToBeRan;
ContentPage.ToolbarItems.Add(updateToolbarItem);
ContentPage.ToolbarItems.Add(deleteToolbarItem);
}
// rest of the class
}
6条答案
按热度按时间jdgnovmf1#
我建议构建一个可绑定的ToolBoxItem,这样你就可以通过视图模型属性来控制可见性。
实现可能如下所示:
dgiusagp2#
正如你自己发现的那样,
IsVisible
并不存在,所以如果你仍然想要的话,你必须自己实现这样的功能。另一种方法是在页面的代码隐藏中处理它,并在需要时删除或添加工具栏项。
添加和删除很简单,只需向
ToolbarItems
集合添加和删除项即可:例如ToolbarItems.RemoveAt(0);
将删除第一个工具栏项。v09wglhw3#
把@Gerald answer付诸行动,可以这样做:
这更简洁,并且从后面的代码开始工作。
nzkunb0c4#
我们需要前端的IsVisible属性,因为xamarin没有这个属性,你可以使用Device.RuntimePlatform来真实的检查应用程序正在运行的设备,因为我的代码在XAML文件的.cs中,我们可以使用xaml.cs来将项目插入屏幕。()来执行逻辑并检查我的设备是否在哪个平台上,因为我不希望它在UWP中显示工具栏。代码位于XAML文件的.cs中:
h22fl7wq5#
我使用重载构造函数很容易地实现了这一点。下面是一个例子:
上面的伪代码将在类示例化时添加"Save"工具栏项,或者在提供参数时添加"Update"和"Delete"。
这不像IsEnabled/IsVisible布尔值那样优雅,但它是朝着正确方向迈出的一步。按照这种思路,您可以在运行时通过添加和删除子工具栏来修改子工具栏,使其"显示"和"隐藏"。
祝你好运!
ryhaxcpt6#
我不知道@tequila slammer的解决方案是否完全适用于Xamarin,但对我们来说,它只适用于. Net Maui(Xamarin的演变),并将IsVisible属性绑定到一个变量。
从ContentPage的ToolbarItem列表中移除BindableToolbarItem后,它将永远与IsVisible绑定到的对象断开连接。
例如:我们希望使用此控件来隐藏或显示导航到管理员屏幕的ToolbarItem,如果我在应用启动时以管理员身份登录,则该项目会在那里......太好了。如果我随后注销并以非管理员身份登录,则该项目不会在那里......完美。如果我随后注销并以管理员身份登录,则该项目不会在那里(propertyChanged:OnIsVisibleChanged从未激发)...:-(。
对我们来说不是什么大事,如果你想要管理员访问权限,那么停止应用程序并启动应用程序以管理员身份登录并不是什么大问题。