.Net MAUI 中的 CarouselView:CurrentItem 和 Position 不起作用

问题描述 投票:0回答:2

我注意到我的 .Net MAUI 解决方案中的 CarouselView 不会对 Position 或 CurrentItem 更改做出反应。然后我采取了“毛伊岛样本”解决方案(https://github.com/dotnet/maui-samples)并在“Set CurrentItem/Position”示例页面上复制了相同的解决方案。这是示例解决方案代码,我没有更改一行代码,“按原样”运行

        public MonkeysViewModel()
        {
            source = new List<Monkey>();
            CreateMonkeyCollection();

            CurrentItem = Monkeys.Skip(3).FirstOrDefault();
            OnPropertyChanged("CurrentItem");
            Position = 3;
            OnPropertyChanged("Position");
        }

它应该跳过前 3 个项目并显示第四只猴子,但它显示的是第一个,即狒狒:

enter image description here

我使用 Android Emulator API 32。知道可能出了什么问题吗?

xamarin xamarin.forms maui
2个回答
2
投票

这个问题还有一些相关的问题。

您可以在这里关注他们:

https://github.com/dotnet/maui/issues/7575

https://github.com/dotnet/maui/issues/9749

感谢您的支持和反馈。

致以诚挚的问候!

杰西


0
投票

我通过为 CarouselView 创建自定义渲染器找到了 PositionChangedCommand 的解决方案,它对我有用,希望它也能帮助您!

public class CarouselViewRenderer : Microsoft.Maui.Controls.Compatibility.Platform.iOS.CarouselViewRenderer

{

protected override void OnElementChanged(ElementChangedEventArgs<CarouselView> e)
{
    base.OnElementChanged(e);
    

}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs changedProperty)
{
    base.OnElementPropertyChanged(sender, changedProperty);
    if (changedProperty.PropertyName == "Position")
    {
        if (Control != null)
        {

            var carouselView = Element as CarouselView;
            if (carouselView != null)
            {
                carouselView.PositionChangedCommand?.Execute(null);

            }

        }
    }
}

}

以及 MauiProgram.cs 页面上的 CreateMauiApp()

 var builder = MauiApp.CreateBuilder();
    _ = builder
        .UseMauiApp<App>()
        .ConfigureMauiHandlers(handlers =>
        {
           
            

#如果是IOS

           handlers.AddCompatibilityRenderer(typeof(CarouselView), typeof(Platforms.iOS.Renderers.CarouselViewRenderer));
          

#endif });

© www.soinside.com 2019 - 2024. All rights reserved.