![](/img/trans.png)
[英]Xamarin.Forms Picker ItemsSource stays empty in XAML
[英]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
標記擴展
<Picker ItemsSource="{x:Static local:NetworkSettings.Networks}" />
本地定義的地方
xmlns:local="clr-namespace:blahblahblah;assembly=blahblahblah"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.