【发布时间】:2020-09-14 19:15:27
【问题描述】:
Flexlayout有可绑定的Item源
<FlexLayout x:Name="playerscollection" Wrap="Wrap" BindableLayout.ItemsSource="{Binding Players}" />
视图模型中的项目定义为
public ObservableCollection<PlayerModel> Players { get; set; }
FlexLayout 数据模板是一个内容视图 我需要分配一个特定的视图模型“PlayerViewModel”作为内容视图 BindingContext
public PlayerViewModel(bool showPicker = true, PlayerModel player = null){}
所以在 FlexLayout 中,
<FlexLayout x:Name="playerscollection" Wrap="Wrap" BindableLayout.ItemsSource="{Binding Players}">
<views:PlayerView >
<views:PlayerView.BindingContext>
<viewModels:PlayerViewModel>
<x:Arguments>
<x:Boolean>False</x:Boolean>
<models:PlayerModel/>
</x:Arguments>
</viewModels:PlayerViewModel>
</views:PlayerView.BindingContext>
</views:PlayerView>
</FlexLayout>
但错误提示“类型 'PlayerViewModel' 不能用作对象元素,因为它不是公共的或未定义公共无参数构造函数或类型转换器”
【问题讨论】:
-
你试过给PlayerViewModel.cs添加一个空的构造函数吗?
-
为什么?我需要通过在播放器视图中为相应属性绑定的列表项
-
您仍在使用带参数的构造函数,但是,错误确实提到您没有定义无参数构造函数。框架本身在尝试首先在幕后构建 UI 时可能正在寻找它。
标签: xaml xamarin xamarin.forms viewmodel