C# 绑定工具栏项在Xamarin.Forms中单击
我正在尝试使用Xamarin.Forms构建我的第一个简单应用程序 在这个应用程序中,我有一个带有ListView和工具栏的ContentPage(位于NavigationPage内) 工具栏上有一个工具栏项,单击该项时应运行一个方法。即使我搜索过谷歌瘦,我还是无法让它工作 谁能告诉我我错过了什么 XAML:C# 绑定工具栏项在Xamarin.Forms中单击,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在尝试使用Xamarin.Forms构建我的第一个简单应用程序 在这个应用程序中,我有一个带有ListView和工具栏的ContentPage(位于NavigationPage内) 工具栏上有一个工具栏项,单击该项时应运行一个方法。即使我搜索过谷歌瘦,我还是无法让它工作 谁能告诉我我错过了什么 XAML: 代码隐藏: //... public partial class SetsPage : ContentPage { ObservableCollection&l
代码隐藏:
//...
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");
});
}
}
//...
/。。。
公共部分类集合页:ContentPage
{
ObservableCollection集合=新的ObservableCollection();
公共命令CreateCommand{get;private set;}
公共网页(){
初始化组件();
添加(新卡片集{Title=“Test 1”});
添加(新卡片集{Title=“Test 2”});
添加(新卡片集{Title=“Test 3”});
CardSetView.ItemsSource=集合;
this.CreateCommand=新命令(异步(发送方)=>
{
Debug.WriteLine(“你好”);
});
}
}
//...
我试过:
async()=>{…}
参数)(对象发送方,System.EventArgs e)=>{…}
事件侦听器(通过代码。单击+=
)我认为这是一个绑定上下文的问题。如果将该命令放入一个单独的类(理想情况下是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();
...
或者,您可以只设置this.BindingContext=this;这在我的测试中没有达到预期效果。你试过了吗?
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();
...