【发布时间】:2020-07-14 07:38:07
【问题描述】:
我有一个静态集合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;
}
}
到目前为止一切顺利。此类已初始化且有效。
当我从 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}" />
..那么一切都很好。
有什么不同?为什么它接受静态绑定?
【问题讨论】:
-
我发现当你把
IList<NetworkSetting> Networks改成List<NetworkSetting> Networks,就可以了。 -
@LeoZhu-MSFT 将其添加为答案,我会接受。我遵循docs.microsoft.com/en-us/dotnet/api/… 上的指导方针
标签: c# xamarin.forms data-binding xamarin-binding