У меня есть следующее 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
от привязки к эффекту нет. Я также попытался установить sh, если событие переключения происходило из пользовательского ввода или из самого кода, но опять же безрезультатно. Как я могу решить эту проблему, я уверен, что это просто.