我想使Global Toolbar可以在我的整个应用程序中访问。我正在使用MVVM模式。 我已经在我的app.xaml中尝试过此操作:
<Application.Resources>
<ResourceDictionary>
<ContentPage x:Key="BoloTool">
<ContentPage.ToolbarItems>
<ToolbarItem Name="MenuItem2" Order="Secondary" Text="Moje dane" Priority="1"/>
<ToolbarItem Name="MenuItem4" Order="Secondary" Text="Wyloguj" Priority="1"/>
<ToolbarItem Name="MenuItem4" Order="Secondary" Text="Do Strony Testowej" Priority="1"/>
<ToolbarItem Name="MenuItem4" Order="Secondary" Text="Checkout" Priority="1"/>
</ContentPage.ToolbarItems>
</ContentPage>
</ResourceDictionary>
</Application.Resources>
在我的“ Page.xaml”之一中,我做到了:
<ContentPage.ToolbarItems>
<ToolbarItem BindingContext="{StaticResource BoloTool}"/>
</ContentPage.ToolbarItems>
它可以编译,但工具栏上什么也没有显示,您可以听到咔嗒声,但是没有声音,没有“ 3点”
我还试图通过创建代码文件“ x.cs”来实现这一目标:
public class BoloToolbar : ContentPage
{
public BoloToolbar()
: base()
{
Init();
}
private void Init()
{
this.ToolbarItems.Add(new ToolbarItem() { Text = "Help", Priority = 0, Order = ToolbarItemOrder.Secondary });
this.ToolbarItems.Add(new ToolbarItem() { Text = "License", Priority = 0, Order = ToolbarItemOrder.Secondary });
this.ToolbarItems.Add(new ToolbarItem() { Text = "About", Priority = 0, Order = ToolbarItemOrder.Secondary });
}
}
并在我的视图模型中继承它:
公共类CartViewModel:BoloToolbar,INotifyPropertyChanged
但是它不起作用。我被卡住了,我该怎么办?
Ps。奇怪的是,某些教程中没有通用工具栏这样的通用工具。
答案 0 :(得分:1)
我认为您有点缺乏Xamarin.Forms的核心概念。您应该花一些时间研究它们。
并在我的视图模型中继承它:
从BoloToolbar
类继承VM将无济于事。视图模型是绑定到您的视图/页面,但与之不同。您应该从BoloToolbar
<myNameSpace:BoloToolbar x:Class="MyNamespace.MyPage" ...>
<myNameSpace:BoloToolbar.Content>
<!-- Your content goes here -->
</myNameSpace:BoloToolbar.Content>
</myNameSpce:BoloToolbar>
别忘了,您必须更改
public class MyPage : ContentPage
{
// ...
}
到
public class MyPage : BoloToolbar
{
// ..
}
在您的 MyPage.xaml.cs 中。
在您的 Application.xaml 中,在资源字典中定义一个ContentPage
,然后尝试将其分配给另一页的ToolbarItem
。
<ContentPage.ToolbarItems>
<ToolbarItem ... />
</ContentPage.ToolbarItems>
将一个 ToolbarItem
添加到您的页面。设置其BindingContext
不会对此进行任何更改。此外,没有设置Text
,也没有设置Icon
,因此什么也不显示。
ToolbarItems
被声明为IList<ToolbarItem>
并且是只读的,因此,您将无法通过资源简单地设置ToolbarItems
。在内部,它是ObservableCollection<ToolbarItem>
,操作Page.ToolbarItems
的唯一方法是添加ToolbarItem
对象。因此,您将只能添加基类中的项目。