C# 带有静态ItemsSource的表单选取器问题

C# 带有静态ItemsSource的表单选取器问题,c#,xamarin.forms,data-binding,xamarin-binding,C#,Xamarin.forms,Data Binding,Xamarin Binding,我有一个静态集合网络: public class NetworkSettings { private static List<NetworkSetting> _networks; public static IList<NetworkSetting> Networks { get { if (_networks == null) { _

我有一个静态集合
网络

public class NetworkSettings
{
    private static List<NetworkSetting> _networks;

    public static IList<NetworkSetting> Networks
    {
        get
        {
            if (_networks == null)
            {
                _networks = new List<NetworkSetting>
                {
                    new NetworkSetting(),
                    ...
                    ...
                }
            }
            return _networks;
        }
    }
公共类网络设置
{
专用静态列表网络;
公共静态IList网络
{
得到
{
如果(_networks==null)
{
_网络=新列表
{
新建网络设置(),
...
...
}
}
返回网络;
}
}
到目前为止还不错。这个类是初始化的,并且是有效的

当我从选择器绑定到它时,使用:

[View]
<xmlns:models="clr-namespace:AppName.Models" />

<Picker ItemsSource="{x:Static models:NetworkSettings.Networks}"
        SelectedItem="{Binding SelectedNetworkSetting, Mode=TwoWay}" />
[查看]
我得到一个NullReference异常(与ItemsSource有关)

但如果绑定到相同数据的ViewModel版本:

[ViewModel]
public IList<NetworkSetting> NetworkSettings => Models.NetworkSettings.Networks;

[View]
<Picker ItemsSource="{Binding NetworkSettings}"
        SelectedItem="{Binding SelectedNetworkSetting, Mode=TwoWay}" />
[ViewModel]
公共IList NetworkSettings=>Models.NetworkSettings.Networks;
[查看]
…那么一切都好了。

有什么区别?为什么它接受静态绑定?

静态绑定有点不同,需要使用
x:static
标记扩展

尝试改变

  public static IList<NetworkSetting> Networks
公共静态IList网络

公共静态列表网络

它将起作用。

除了名称空间的名称,这正是我所做的。我将修改这个问题。我发现当您将
IList Networks
更改为
List Networks
时,它起作用。@LeoZhu MSFT将此作为答案添加进来,我将接受。我是按照
xmlns:local="clr-namespace:blahblahblah;assembly=blahblahblah"
  public static IList<NetworkSetting> Networks
   public static List<NetworkSetting> Networks