Xamarin表单:如何更改listview活动微调器颜色

Xamarin表单:如何更改listview活动微调器颜色,listview,xamarin.forms,renderer,custom-renderer,Listview,Xamarin.forms,Renderer,Custom Renderer,如何更改Xamarin.Forms.ListView的活动指示器微调器的颜色,特别是针对iOS 我发现关于这个问题,但定制渲染器在这一点上对我来说太先进了,我还不能真正理解它们 使用第二个链接,我在iOS项目中使用给定代码创建了一个类,并在PCL项目中创建了一个类,以便可以从我的XAML视图中引用它: namespace spinnerTest { public class ColoredRefreshListView : ListView { } } 为了方便起见,我

如何更改Xamarin.Forms.ListView的活动指示器微调器的颜色,特别是针对iOS

我发现关于这个问题,但定制渲染器在这一点上对我来说太先进了,我还不能真正理解它们

使用第二个链接,我在iOS项目中使用给定代码创建了一个类,并在PCL项目中创建了一个类,以便可以从我的XAML视图中引用它:

namespace spinnerTest
{
    public class ColoredRefreshListView : ListView
    {
    }
}
为了方便起见,我找到了以下代码:

public class ColoredRefreshListViewRenderer : ListViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
    {
        base.OnElementChanged(e);
        var vc = ((UITableViewController)ViewController);

        if (vc?.RefreshControl != null)
            vc.RefreshControl.TintColor = UIColor.FromRGB(135, 200, 21);
    }
}
公共类ColoredRefreshListViewRenderer:ListViewRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); var vc=((UITableViewController)ViewController); 如果(vc?.RefreshControl!=null) vc.RefreshControl.TintColor=UIColor.FromRGB(13520021); } } 虽然XAML使用自定义控件成功编译,但颜色不变


有什么提示吗?

我不知道你是否找到了解决方案,但你的方法只有在你拉刷新时才起作用(不是在第一次加载时)

仅缺少渲染器的命名空间属性:

[程序集:ExportRenderer(typeof(ListView)、typeof(ColoredRefreshListViewRenderer))]
命名空间Test.iOS.Renderers
{
公共类ColoredRefreshListViewRenderer:ListViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
var vc=((UITableViewController)ViewController);
如果(vc?.RefreshControl!=null)
vc.RefreshControl.TintColor=UIColor.FromRGB(13520021);
}
}
}

注意:如果要将渲染器作为默认值应用于
ListView
,则必须在
ExportRender()
中指定
ListView
类型。取而代之的是使用您定义的基本类型(
ColoredRefreshListView
,在您的示例中),但在这种情况下,您必须在XAML中显式声明此类型,而不仅仅是
ListView
基本类型。

我不知道您是否找到了解决方案,但您的方法只有在拉入刷新时才起作用(不是在第一次加载时)

仅缺少渲染器的命名空间属性:

[程序集:ExportRenderer(typeof(ListView)、typeof(ColoredRefreshListViewRenderer))]
命名空间Test.iOS.Renderers
{
公共类ColoredRefreshListViewRenderer:ListViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
var vc=((UITableViewController)ViewController);
如果(vc?.RefreshControl!=null)
vc.RefreshControl.TintColor=UIColor.FromRGB(13520021);
}
}
}

注意:如果要将渲染器作为默认值应用于
ListView
,则必须在
ExportRender()
中指定
ListView
类型。取而代之的是使用您定义的基类型(
ColoredRefreshListView
,在您的示例中),但是在这种情况下,您必须用XAML显式声明此类型,而不仅仅是
ListView
基类型。

Woah,这是过去的爆炸。IIRC,我基本上按照您所描述的做了,并将其用作自定义控件(不是默认控件)。我可能也大错特错了,但我认为它是在后来的表单版本中修复的。哇,这是过去的爆炸。IIRC,我基本上按照您所描述的做了,并将其用作自定义控件(不是默认控件)。我可能也大错特错了,但我认为它是在后来的表单版本中修复的。
[assembly: ExportRenderer(typeof(ListView), typeof(ColoredRefreshListViewRenderer))]
namespace Test.iOS.Renderers
{
    public class ColoredRefreshListViewRenderer : ListViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
        {
           base.OnElementChanged(e);
           var vc = ((UITableViewController)ViewController);

           if (vc?.RefreshControl != null)
               vc.RefreshControl.TintColor = UIColor.FromRGB(135, 200, 21);
        }
    }
}