.NET MAUI 相对绑定错误“在“System.String”上找不到属性...

问题描述 投票:0回答:1

我正在做 dotnet 上传的 .NET MAUI 初学者教程系列,我的相对绑定不起作用,按照他们所说的做了一切,但错误不断弹出。

我正在尝试将SwipeItem“Delete”绑定到DeleteCommand [RelayCommand](我正在使用CommunityToolkit.Mvvm),Delete函数位于我的MainViewModel.cs中

我不断收到下一个错误:“绑定:在“System.String”上找不到属性“DeleteCommand”。 我试图找到其他人发布有关此错误的任何内容,但一无所获。

这是我的 MainPage.xaml 文件,错误发生在:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp2.MainPage"
             xmlns:viewmodel="clr-namespace:MauiApp2.ViewModel"
             x:DataType="viewmodel:MainViewModel"
             x:Name="mainPageRef">

    <Grid RowDefinitions="100, Auto, *"
          ColumnDefinitions=".75*, .25*"
          Padding="10"
          RowSpacing="10"
          ColumnSpacing="10">

        <Image Grid.ColumnSpan="2"
               Source="mylogo.png"
               BackgroundColor="Transparent"/>
        <Entry Placeholder="Enter task"
               Text="{Binding Text}"
               Grid.Row="1"/>

        <Button Text="Add"
                Command="{Binding AddCommand}"
                Grid.Row="1"
                Grid.Column="1"/>
        <CollectionView Grid.Row="2" Grid.ColumnSpan="2"
                        ItemsSource="{Binding Items}">
            <CollectionView.ItemTemplate>
                <DataTemplate x:DataType="{x:Type x:String}">
                    <SwipeView>
                        <SwipeView.RightItems>
                            <SwipeItems>
                                <SwipeItem Text="Delete"
                                           BackgroundColor="Red"
                                           Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodel:MainViewModel}}, Path=DeleteCommand}"
                                           CommandParameter="{Binding .}"/>
                            </SwipeItems>
                        </SwipeView.RightItems>
                        <Grid Padding="0, 5">
                            <Border>
                                <Label Text="{Binding .}"
                                       FontSize="24"/>
                            </Border>
                        </Grid>
                    </SwipeView>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </Grid>
</ContentPage>

我也尝试添加 AncestorLevel 属性,但也没有帮助

这是我的 MainViewModel.cs:

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.Collections.ObjectModel;


namespace MauiApp2.ViewModel;

public partial class MainViewModel : ObservableObject
{
    public MainViewModel()
    {
        Items = new ObservableCollection<string>();
        System.Diagnostics.Debug.WriteLine("MainViewModel constructor called");

    }

    [ObservableProperty]
    ObservableCollection<string> items;

    [ObservableProperty]
    string text;

    [RelayCommand]
    void Add()
    {
        if (string.IsNullOrWhiteSpace(Text))
            return;

        Items.Add(Text);
        //add our item
        Text = string.Empty;

    }

    [RelayCommand]
    void Delete(string s)
    {
        Console.WriteLine("IN THE DELETE FUNCTION");
        if(Items.Contains(s))
            Items.Remove(s);
    }
}

感谢您的宝贵时间!

.net data-binding command maui relativesource
1个回答
0
投票

我刚刚创建了另一个项目,将代码从原始项目复制到新项目,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.