我正在尝试使用Prism调用ViewModel中设置的方法。我将EventToCommandBehavior绑定在一个按钮上,但是当我单击按钮时,什么也没有发生。我已经测试了我的方法,并且可以使用,所以我真的认为这是我的EventToCommandBehavior的问题。
XAML:
<controls:FloatingActionButton HeightRequest="10" WidthRequest="10" Image="ic_add.png" ButtonColor="#3BE2CA" Grid.Column="1" Margin="160,45,0,40">
<controls:FloatingActionButton.Behaviors>
<b:EventToCommandBehavior
EventName="Clicked"
Command="{Binding AddToLibraryCommand}"/>
</controls:FloatingActionButton.Behaviors>
</controls:FloatingActionButton>
ViewModel中的方法:
private DelegateCommand _addToLibraryCommand;
public DelegateCommand AddToLibraryCommand =>
_addToLibraryCommand ?? (_addToLibraryCommand = new DelegateCommand(ExecuteAddToLibraryCommand));
是的,我的Button并不是一个真正的Button,它是一个FloatingActionButton,它继承了从SuavePirate的存储库下载的Button类: https://github.com/SuavePirate/Xamarin.Forms.Controls.FloatingActionButton
我尝试将“行为”与经典的Button以及 Command 属性一起使用,但两者均无效。
有人可以向我解释问题出在哪里吗?
谢谢您的帮助! :)
答案 0 :(得分:0)
好的,我发现了我的错误在哪里:
因为我的Button在ListView中,所以Button试图将Command放在错误的类上,并且此ListView更改了Button的BindingContext。所以我不得不手动设置Button的BindingContext。
<controls:FloatingActionButton x:Name="FAB" HeightRequest="10" WidthRequest="10"
ButtonColor="#3BE2CA"
Grid.Column="1"
Margin="160,45,0,40"
<!-- Added this line --> BindingContext="{Binding Source={x:Reference BookList}, Path=BindingContext}"
Command="{Binding AddToLibraryCommand}"/>
谢谢您的帮助!