【发布时间】:2020-04-29 09:30:55
【问题描述】:
我有以下CollectionView -
<CollectionView x:Name="PCollection" ItemsSource="{Binding P.data}" Margin="0,10,2,10">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Image Source="p" HeightRequest="60" WidthRequest="60" />
<StackLayout Orientation="Vertical" >
<Label Text="{Binding id}" VerticalOptions="Center" IsVisible="False"/>
<StackLayout Orientation="Horizontal" >+
<Switch IsToggled="{Binding IsOwned, Mode=TwoWay}" HorizontalOptions="Start" Toggled="Switch_Toggled_Place" />
</StackLayout>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
我的代码在后面 -
bool _isOwned;
public bool IsOwned
{
get
{
return _isOwned;
}
set
{
_isOwned = value;
}
}
private void Switch_Toggled_Place(object sender, ToggledEventArgs e)
{
}
我的问题是,当我切换集合中的开关时,一切都按预期工作,我进入Switch_Toggled_Place。然而,假设集合中有 20 个项目,当我向上滚动并且切换开关消失时,由于某种原因它会再次触发 Switch_Toggled_Place 并取消选中我的开关!
我尝试从绑定中删除Mode=TwoWay,但没有效果。我还尝试确定切换事件是来自用户输入还是来自代码本身触发但再次无效。我该如何解决这个问题,我相信这很简单。
【问题讨论】:
标签: c# xaml xamarin.forms collectionview