棱镜行为-通过按钮使用EventToCommandBehavior

时间:2019-06-16 21:13:29

标签: xamarin.forms prism

我正在尝试使用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 属性一起使用,但两者均无效。
 有人可以向我解释问题出在哪里吗?

谢谢您的帮助! :)

1 个答案:

答案 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}"/>

谢谢您的帮助!