在 MAUI 中将命令绑定到父视图模型

Posted

技术标签:

【中文标题】在 MAUI 中将命令绑定到父视图模型【英文标题】:Binding a command to a parent view model in MAUI 【发布时间】:2022-01-09 15:59:05 【问题描述】:

我想将父视图模型引用为命令绑定。 我原以为 MAUI 语法会像 Xamarin 一样工作,但我收到以下错误:

'' 预期 '�' 预期

这是我尝试过的语法:

    <ContentPage ... x:Class="ParentPage" x:DataType="ParentViewModel" x:Name="Parent">
        <StackLayout>
            <ListView ItemsSource="Binding Tabs">
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="TabViewModel">
                        <ViewCell>
                            <Button Text="Do it"
                                Command="Binding Path=SelectTab
                                    RelativeSource=RelativeSource AncestorType=x:Type ParentPage" />
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>
    </ContentPage>



Or:
    <ContentPage ... x:Class="ParentPage" x:DataType="ParentViewModel" x:Name="Parent">
        <StackLayout>
            <ListView ItemsSource="Binding Tabs">
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="TabViewModel">
                        <ViewCell>
                            <Button Text="Do it"
                                Command="Binding Path=SelectTab
                                    Source=x:Reference Parent" />
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>
    </ContentPage>

这个语法有什么问题?

是否有关于 MAUI 绑定的特定文档?

【问题讨论】:

【参考方案1】:

在第一个 sn-p 中,您缺少一个逗号和一个超出需要的右大括号:

<Button Text="Do it"
    Command="Binding Path=SelectTab, 
                      RelativeSource=RelativeSource AncestorType=x:Type ParentPage"
/>

【讨论】:

这是一个复制粘贴错误,我得到相同的语法错误,括号数正确 您是否在“SelectTab”之后插入了逗号? 确实,这是主要问题。我还得换成Source=RelativeSource AncestorType=x:Type ParentPage

以上是关于在 MAUI 中将命令绑定到父视图模型的主要内容,如果未能解决你的问题,请参考以下文章

绑定到父数据上下文(超出 itemssource)

SwiftUI 绑定到父视图重新渲染子视图

Rails:在 HABTM 关系中将子项从大型记录集添加到父模型的 UI

如何在 MAUI 中拥有一个命令(能够)视图或一个带有内容的按钮?

[MAUI程序设计]界面多态与实现

如何在silverlight中将子元素的宽度绑定到父元素的宽度