首页 > 解决方案 > 在 XAML 中为 viewmodel 构造函数添加复杂参数

问题描述

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'不能用作对象元素,因为它不是公共的或没有定义公共无参数构造函数或类型转换器”

标签: xamlxamarinxamarin.formsviewmodel

解决方案


我创建了一个基本演示来测试代码并重现错误。该错误不会影响项目构建,它只是 IDE 的智能感知错误。请忽略错误并部署代码,它会正常工作。


推荐阅读