Prism 行为 - 将 EventToCommandBehavior 与按钮一起使用
Prism Behaviors - Using EventToCommandBehavior with a Button
我正在尝试使用 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 class:
https://github.com/SuavePirate/Xamarin.Forms.Controls.FloatingActionButton
我尝试将我的行为与 classic 按钮以及 Command 属性一起使用,但两者都不起作用。
有人可以解释一下问题出在哪里吗?
感谢您的帮助! :)
好吧,我发现我的错误在哪里:
Button 试图让我的命令出错 class,因为我的 Button 在 ListView 中,而这个 ListView 改变了 Button 的绑定上下文。所以我必须手动设置 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}"/>
感谢您的帮助!
我正在尝试使用 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 class: https://github.com/SuavePirate/Xamarin.Forms.Controls.FloatingActionButton
我尝试将我的行为与 classic 按钮以及 Command 属性一起使用,但两者都不起作用。
有人可以解释一下问题出在哪里吗?
感谢您的帮助! :)
好吧,我发现我的错误在哪里:
Button 试图让我的命令出错 class,因为我的 Button 在 ListView 中,而这个 ListView 改变了 Button 的绑定上下文。所以我必须手动设置 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}"/>
感谢您的帮助!