我正在尝试使用Xamarin.Forms构建我的第一个简单应用程序。
在这个应用程序中,我有一个ContentList,带有一个ListView和一个工具栏(在NavigationPage内部)。
工具栏上有一个ToolbarItem,单击该工具栏应运行一个方法。即使我已经搜索过Google Thin,但我还是无法使它正常工作...
谁能告诉我我所缺少的吗?
XAML:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:constants="clr-namespace:FlashCards;assembly=FlashCards"
x:Class="FlashCards.SetsPage"
Title="Card Sets">
<ContentPage.ToolbarItems>
<ToolbarItem Name="Add" Icon="Icon-Button-Add.png" Command="{Binding CreateCommand}"></ToolbarItem>
</ContentPage.ToolbarItems>
<ListView x:Name="CardSetView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Title}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
代码背后:
//...
public partial class SetsPage : ContentPage
{
ObservableCollection<CardSet> sets = new ObservableCollection<CardSet>();
public Command CreateCommand { get; private set; }
public SetsPage() {
InitializeComponent();
sets.Add(new CardSet{ Title = "Test 1" });
sets.Add(new CardSet{ Title = "Test 2" });
sets.Add(new CardSet{ Title = "Test 3" });
CardSetView.ItemsSource = sets;
this.CreateCommand = new Command(async (sender) =>
{
Debug.WriteLine("Hello");
});
}
}
//...
我试过了:
您在上方看到的
仅通过C#创建工具栏和按钮(并将
async () => { ... }
参数添加到ToolbarItem构造函数)常规的ol'
(object sender, System.EventArgs e) => { ... }
事件侦听器(通过带有.Clicked +=
的代码) 最佳答案
我认为这是一个具有约束力的上下文问题。如果您将命令放入单独的类(最好是ViewModel)中,并将其用作页面的绑定上下文,则它应该可以正常工作
public class MyVm {
public MyVm() {
this.CreateCommand = new Command((sender) =>
{
Debug.WriteLine("Hello");
});
}
public ICommand CreateCommand { get; private set; }
}
...
public SetsPage() {
var vm = new MyVm();
this.BindingContext = vm;
InitializeComponent();
...
关于c# - 绑定(bind)ToolbarItem单击Xamarin.Forms,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36234080/