我出于测试目的制作了Xamarin应用程序,由于某种原因,我添加的按钮不会触发该命令。我也尝试过从代码隐藏和xaml设置上下文,但是仍然无法正常工作。
XAML代码:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:implementation="clr-namespace:RxposTestApp.Implementation;assembly=RxposTestApp"
x:Class="RxposTestApp.Page">
<ContentPage.BindingContext>
<implementation:BaseCommandHandler/>
</ContentPage.BindingContext>
<ContentPage.Content>
<StackLayout>
<Label Text="Welcome to Xamarin.Forms!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Button Text="CLIK MIE" Command="BaseCommand"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
BaseCommandHandler类:
公共类BaseCommandHandler:INotifyPropertyChanged { 公共事件PropertyChangedEventHandler PropertyChanged;
public ICommand BaseCommand { get; set; }
public BaseCommandHandler()
{
BaseCommand = new Command(HandleCommand);
}
public void HandleCommand()
{
//should fire this method
}
}
答案 0 :(得分:1)
<Button Text="CLIK MIE" Command="{Binding BaseCommand}"/>
您正在使用MVVM,因此需要将ViewModel的属性绑定到View。
答案 1 :(得分:1)
问题是
<Button Text="CLIK MIE" Command="BaseCommand"/>
让我们退后一步,谈谈绑定。
<Button Text="CLIK MIE" Command="{Binding BaseCommand}"/>
您会注意到{Binding ...},它告诉XAML引擎在绑定上下文中查找公共属性。在这种情况下,我们要查找名为“ BaseCommand”的公共属性。绑定提供了很多东西。其中之一就是监听属性更改通知。
下一个问题是我们如何通知视图可以执行命令?还是当前无法执行?或BaseCommand属性设置为ICommand实例而不是null?
我通常更喜欢使用私有字段来支持公共财产。
private ICommand _baseCommand;
Public ICommand BaseCommand
{
get
{
return this._baseCommand;
}
set
{
this._baseCommand = value;
// Notification for the view.
}
}
这样您可以根据自己的喜好引发通知,并且在BaseCommand的值更改时将始终引发该通知。