Xamarin.forms FreshEssentials BindablePicker的强制转换异常无效

Xamarin.forms FreshEssentials BindablePicker的强制转换异常无效,xamarin.forms,Xamarin.forms,我在其他项目中使用过FreshEssentials BindablePicker,但在特定页面/页面模型中遇到了一个非常奇怪的问题 我将页面和页面模型精简为以下内容: 第页: 用这种方法 protected override void OnElementChanged(ElementChangedEventArgs<BindablePicker> e) { if (e.OldElement != null) ((

我在其他项目中使用过FreshEssentials BindablePicker,但在特定页面/页面模型中遇到了一个非常奇怪的问题

我将页面和页面模型精简为以下内容: 第页:

用这种方法

protected override void OnElementChanged(ElementChangedEventArgs<BindablePicker> e)
        {
            if (e.OldElement != null)
                ((ObservableCollection<string>)e.OldElement.Items).CollectionChanged -= RowsCollectionChanged;

            if (e.NewElement != null)
            {
                ((ObservableCollection<string>)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
                if (Control == null)
                {
                    var button = new AButton(Context) { Focusable = false, Clickable = true, Tag = this, Text = e.NewElement.Title };
                    button.SetOnClickListener(PickerListener.Instance);
                    SetNativeControl(button);
                }
                UpdatePicker();
            }

            base.OnElementChanged(e);
        }
protected override void OnElementChanged(ElementChangedEventArgs e)
{
if(e.OldElement!=null)
((ObservableCollection)e.OldElement.Items).CollectionChanged-=RowsCollectionChanged;
if(例如NewElement!=null)
{
((ObservableCollection)e.NewElement.Items).CollectionChanged+=RowsCollectionChanged;
if(Control==null)
{
var button=newabutton(上下文){Focusable=false,Clickable=true,Tag=this,Text=e.NewElement.Title};
SetOnClickListener(PickerListener.Instance);
SetNativeControl(按钮);
}
更新Epicker();
}
基础。一个要素发生变化(e);
}
奇怪的是,将上述精确代码应用到一个全新的项目中效果很好。我已经检查了FreshEssentials和FreshMVVM的版本,它们在工作项目和非工作项目之间是相同的

有人遇到过这个问题和/或有什么想法吗

完整的Xamarin Studio和其他版本信息如下:

==Xamarin工作室社区===

版本6.1.4(版本1) 安装UUID:462e6ba8-9cb7-4b87-acc8-9dfb0ab2c6f7 运行时: Mono 4.6.2(Mono-4.6.0-branch/ac9e222)(64位) GTK+2.24.23(罗利主题)

软件包版本:406020016

==NuGet===

版本:3.4.3.0

==Xamarin.Profiler===

版本:0.33.2 位置:/Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

==Xamarin.Android===

版本:7.0.2.42(Xamarin Studio社区) Android SDK:/Users/jameslavery/Library/Developer/Xamarin/Android SDK macosx 支持的Android版本: 2.3(API 10级) 4.0.3(API第15级) 4.1(API 16级) 4.3(API第18级) 4.4(API第19级) 5.0(API第21级) 5.1(API第22级) 6.0(API第23级)

SDK工具版本:24.4.1 SDK平台工具版本:23.1 SDK构建工具版本:23.0.1

Java SDK:/usr java版本“1.7.0_71” Java(TM)SE运行时环境(build 1.7.0_71-b14) Java HotSpot(TM)64位服务器虚拟机(构建24.71-b01,混合模式)

Android Designer EPL代码可在此处获得:

==Xamarin Android播放器===

版本:0.6.5 位置:/Applications/Xamarin Android Player.app

==苹果开发者工具===

Xcode 8.0(11246) 构建8A218a

==Xamarin.iOS===

版本:10.3.1.8(Xamarin Studio社区) 哈希:7beaef4 分支机构:cycle8 xi 建造日期:2016-12-20 02:58:14-0500

==Xamarin.Mac===

版本:2.10.0.120(Xamarin Studio社区)

==生成信息===

发布ID:601040001 Git版本:e606823f2dd01b4552216c013b597a73bec2068f 建造日期:2017-01-10 17:28:57-05 Xamarin附加值:c92d0626d347aaa02839689eaac2961d24c9f446 建造车道:monodevelop-lion-cycle8

==操作系统===

Mac OS X 10.11.6 达尔文james-MacBook-Pro.local 15.6.0达尔文内核版本15.6.0 2016年6月23日星期四18:25:34 PDT root:xnu-3248.60.10~1/RELEASE\u X86\u 64 X86\u 64

==已启用的用户安装的加载项===

StyleCop支持1.0.1.9 大猩猩玩家0.9.1.2 XamlStyler 1.0.2


查看您在FreshEssentials源代码中发布的行,它似乎需要一组
字符串
?当您绑定
环境的集合时
@GeraldVersluis是的,我同意,但我发布的行在渲染器中很深,并且在内部它使用DisplayName属性创建了一个字符串集合(我假设)。有趣的是,在一个全新的项目中,使用相同的代码,这一切都很好!
using System.Collections.Generic;
using FreshMvvm;
using PropertyChanged;

namespace Manager.PageModels.Config
{
    [ImplementPropertyChanged]
    public class RemoteConnectionsPageModel : FreshBasePageModel
    {
        public enum Environment
        {
            Live,
            Test,
            Third
        }

        public class EnvironmentPickerItem
        {
            public string Name {
                get {
                    return Env.ToString ();
                }
            }

            public Environment Env {
                get;
                set;
            }
        }
        public RemoteConnectionsPageModel ()
        {
            List<EnvironmentPickerItem> _Environments;
            _Environments = new List<EnvironmentPickerItem> ();
            _Environments.Add (new EnvironmentPickerItem () { Env = Environment.Live });
            _Environments.Add (new EnvironmentPickerItem () { Env = Environment.Test });
            _Environments.Add (new EnvironmentPickerItem () { Env = Environment.Third });
            this.Environments = _Environments;
        }

        public List<EnvironmentPickerItem> Environments {
            get;
            set;
        }
    }
}
((ObservableCollection<string>)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
protected override void OnElementChanged(ElementChangedEventArgs<BindablePicker> e)
        {
            if (e.OldElement != null)
                ((ObservableCollection<string>)e.OldElement.Items).CollectionChanged -= RowsCollectionChanged;

            if (e.NewElement != null)
            {
                ((ObservableCollection<string>)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
                if (Control == null)
                {
                    var button = new AButton(Context) { Focusable = false, Clickable = true, Tag = this, Text = e.NewElement.Title };
                    button.SetOnClickListener(PickerListener.Instance);
                    SetNativeControl(button);
                }
                UpdatePicker();
            }

            base.OnElementChanged(e);
        }