Как я могу изменить прозрачность содержимого представления смахивания во время открытия смахивания в Xamarin Forms? - PullRequest
0 голосов
/ 13 июля 2020

Я хочу изменить непрозрачность, пока выполняется смахивание. Есть ли какие-нибудь события, которые я мог бы использовать для этого, и есть ли у кого-нибудь примеры того, как они это сделали. Я бы хотел, чтобы непрозрачность фона смахивания была go от 100% до 0%, когда область смахивания полностью отображается.

1 Ответ

0 голосов
/ 14 июля 2020

Добро пожаловать в SO!

Я не уверен, хотите ли вы этого, вы можете попробовать SwipeEnded и SwipeChanging, чтобы проверить.

Код Xaml ( на основе официального образца ) следующим образом:

...
<SwipeView SwipeEnded="SwipeView_SwipeEnded" SwipeChanging="SwipeView_SwipeChanging">
        <SwipeView.LeftItems>
            <SwipeItems SwipeBehaviorOnInvoked="Close"
                        Mode="Reveal">
                <SwipeItem Text="Favorite"
                            IconImageSource="favorite.png"
                            BackgroundColor="LightGreen"
                            Command="{Binding Source={x:Reference collectionView}, Path=BindingContext.FavoriteCommand}"
                            CommandParameter="{Binding}" />
                <SwipeItem Text="Delete"
                            IconImageSource="delete.png"
                            BackgroundColor="LightPink"
                            Command="{Binding Source={x:Reference collectionView}, Path=BindingContext.DeleteCommand}"
                            CommandParameter="{Binding}" />
            </SwipeItems>
        </SwipeView.LeftItems>
 ...

ContentPage изменит Opacity при вызове SwipeChanging. А при вызове SwipeEnded установите Opacity be 1.

private void SwipeView_SwipeEnded(object sender, SwipeEndedEventArgs e)
{
    Console.WriteLine("SwipeView_SwipeEnded");
    var swipView = sender as SwipeView;
    
    swipView.Opacity = 1;

}

private void SwipeView_SwipeChanging(object sender, SwipeChangingEventArgs e)
{
    var swipView = sender as SwipeView;
    
    swipView.Opacity = e.Offset/ swipView.Width;
}

Эффект:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...