簡體   English   中英

Xamarin.Forms static 的選取器問題

[英]Xamarin.Forms Picker problem with static ItemsSource

我有一個 static 集合Networks

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;
        }
    }

到目前為止,一切都很好。 此 class 已初始化且有效。

當我從 Picker 綁定到它時:

[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}" />

..然后一切都很好。
有什么不同? 為什么它接受 static 綁定?

嘗試改變

  public static IList<NetworkSetting> Networks

   public static List<NetworkSetting> Networks

它會起作用的。

Static 綁定有點不同,需要使用x:Static標記擴展

綁定和 Collections

<Picker ItemsSource="{x:Static local:NetworkSettings.Networks}" />

本地定義的地方

xmlns:local="clr-namespace:blahblahblah;assembly=blahblahblah"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM