xamarin.forms - Xamarin Forms Prism (DialogService) with Switch in ListView items - EventToCommandBehaviour 触发多次
问题描述
我有一个 BindableLayout,在 BindableLayout 的每个项目中都有一个开关,它位于 Prism 对话框页面中。
<StackLayout x:Name="ToggleSingleItemList" BindableLayout.ItemsSource="{Binding FeatureItems}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<StackLayout Margin="0,0,0,20" Orientation="Horizontal">
<Switch HorizontalOptions="EndAndExpand" IsToggled="{Binding Response, Mode=TwoWay, Converter={converters:TextToBooleanConverter}}">
<Switch.Behaviors>
<behaviours:EventToCommandBehavior EventName="Toggled"
Command="{Binding Path=BindingContext.ToggleCommand, Source={x:Reference Name=ToggleSingleItemList }}"
CommandParameter="{Binding .}" />
</Switch.Behaviors>
</Switch>
</StackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
Switch 像往常一样绑定到 ViewModel 上的 DelegateCommand:
public DelegateCommand<FeatureItem> ToggleCommand { get; }
我注意到的问题是,当第一次导航到对话框时,当切换开关时,DelegateCommand 会触发一次。
如果我随后关闭对话框并重新打开,然后再次切换开关,则 DelegateCommand 触发两次,如果关闭并重新打开第三次,依此类推......
似乎很清楚,EventToCommandBehaviour 在每次打开对话框时都会向 DelegateCommand 添加额外的绑定,但在关闭对话框时不会取消绑定。
有人对为什么或如何解决有任何想法吗?
感谢所有帮助。
解决方案
推荐阅读
- c# - Appium:通过 Auth0 登录,找不到正确的 PageSource/元素
- angular - 我想过滤还包含一个数组的嵌套 JSON
- java - 在Java中打印*的金字塔
- c# - 将 Umbraco 8 集成到现有的 .NET 解决方案中
- vb.net - 在 vb.net 中将项目添加到 DataGridViewComboBoxCell
- visual-studio - nuget.config 忽略依赖项的依赖项(子依赖项)
- gitkraken - 将所有内容重置为远程并跳过所有更改
- java - Spring Boot 应用程序 - Maven 问题
- python - 挤压喀拉斯
- php - CodeIgniter 在 IFTTT 上返回未知响应