我目前正在為一家小公司開發顯示應用程式,該公司將使用 AndroidTV(但可能是 Windows PC)在商店櫥窗中顯示重要資訊。由于 .NET Maui 是多平臺應用程式的新方法,我正在使用該框架來構建此應用程式。
目前,我有一個 CollectionView,它通過 REST 呼叫顯示當前待售商品。我現在想做的是讓 CollectionView 的影片從頭到尾緩慢滾動,然后再回傳,以引起路過的人的注意。由于 .NET Maui 非常新,我在谷歌上找不到任何東西,所以這就是為什么我在這里問,是否可以這樣做,或者我是否需要用不可滾動的視圖改變我的方法并轉換 X 值.
在此先感謝,希望有人知道如何讓它作業。
uj5u.com熱心網友回復:
正如@ToolmakerSteve在評論中提到的那樣,正確的方法是將 Translate 用于慢速影片。我將展示我如何在我的案例中使用它來幫助將來的其他人。
您可以使用 Horizo??ntalStackLayout(或 VerticalStackLayout)來顯示您要滾動瀏覽的所有專案,而不是使用 CollectionView:
<HorizontalStackLayout x:Name="ItemList" BindableLayout.ItemsSource="{Binding Items}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<!-- Your DataTemplate -->
</DataTemplate>
</BindableLayout.ItemTemplate>
</HorizontalStackLayout>
之后,您可以轉換 X 值和寬度(或 VerticalStackLayout 的 Y 值和高度),以便生成“滾動”,代碼如下所示。在我的例子中,我給了每個元素 3 秒以獲得最佳速度,但可以根據需要設定該值。此外,我將串列移回以開始回圈,但如果您不需要,可以保留它。
private async Task MoveItemListToEnd()
{
double completeWidth = ItemListStackLayout.Children.Last().Frame.X ItemListStackLayout.Children.Last().Frame.Width;
double visibleWidth = ItemListStackLayout.Width;
double moveWidth = completeWidth - visibleWidth;
uint speed = (3000 * Convert.ToUInt32(ItemListStackLayout.Children.Count));
await VehicleListStackLayout.TranslateTo(-moveWidth, 0, speed, Easing.Linear);
await MoveItemListToStart();
}
private async Task MoveItemListToStart()
{
uint speed = (3000 * Convert.ToUInt32(ItemListStackLayout.Children.Count));
await ItemListStackLayout.TranslateTo(0, 0, speed, Easing.Linear);
await MoveVehicleListToEnd();
}
我希望我的回答能幫助將來回答這個問題的人。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533361.html
標籤:C#。网毛伊岛
