因此,目前我在我的Content Page中有一个选取器,其中有多个来自数据源"Patio"的区域,但是我正在try 验证用户是否在我的ViewModel中的这个选取器中 Select 了一个值,但我始终无法弄清楚为什么seltedItem的绑定不能正常工作.

下面是我的带有绑定的选取器,ItemDisplayBinding和ItemsSource都工作得很好:

<Picker
    x:Name="pckArea"
    Title="Área"
    FontAttributes="Bold"
    FontSize="Small"
    HorizontalTextAlignment="Start"
    ItemDisplayBinding="{Binding Area}"
    ItemsSource="{Binding Patio}"
    SelectedItem="{Binding SelectedArea}"
    TextColor="Black" />

下面是我的ViewModel的一部分,带有SelectedArea属性和我正在try 执行的验证,每当我更改所选项目时,PropertyChanged事件似乎不会触发,并且SelectedArea的值始终为空.

[ObservableProperty]
private ObservableCollection<Patio> _patio = new();
[ObservableProperty, NotifyPropertyChangedFor(nameof(CanPost))]
private string _selectedArea;        
// Validations
public bool CanPost => !string.IsNullOrEmpty(EntryChassi)
    && !string.IsNullOrEmpty(Cracha)
    && !string.IsNullOrEmpty(SelectedArea);

我是不是做错了什么?

我对毛伊岛和MVVM比较陌生,这也是我第一次发帖,所以如果我需要提供更多关于代码的信息,请让我知道.

我也试过这样做,但也不管用:

public string SelectedArea
{
    get => _selectedArea;
    set
    {
        if (_selectedArea != value)
        {
            _selectedArea = value;
            OnPropertyChanged(nameof(_selectedArea));
        }
    }
}

推荐答案

SelectedItem的绑定源的类型必须与ItemsSource中使用的类型相同,在本例中为Patio,而您试图为其使用字符串,这是不可能的.

更改这一点:

[ObservableProperty]
private ObservableCollection<Patio> _patio = new();

[ObservableProperty, NotifyPropertyChangedFor(nameof(CanPost))]
private string _selectedArea;

// Validations
public bool CanPost => !string.IsNullOrEmpty(EntryChassi)
    && !string.IsNullOrEmpty(Cracha)
    && !string.IsNullOrEmpty(SelectedArea);

对此:

[ObservableProperty]
private ObservableCollection<Patio> _patio = new();

[ObservableProperty, NotifyPropertyChangedFor(nameof(CanPost))]
private Patio _selectedArea;
     
// Validations
public bool CanPost => !string.IsNullOrEmpty(EntryChassi)
    && !string.IsNullOrEmpty(Cracha)
    && (SelectedArea is not null);

Csharp相关问答推荐

如何使嵌套for-loop更高效?

如何分配对象后的class的属性?

Select Many和默认IfEmpty内部Select Many错误工作

Int和uint相乘得到LONG?

有没有办法使.NET 6应用程序在特定的.NET 6运行时版本上运行

Appsettings.json未加载.Net 8 Blaazor Web程序集

为什么我的表单在绑定到对象时提交空值?

无法将生产环境的AppDbContext设置替换为用于集成测试的内存数据库

Google OAuth令牌交换在.Net中不起作用

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

将操作从编辑页重定向到带参数的索引页

在C#中,当输入一个方法/局部函数时,我的IEnumerator被重置/重新创建.为什么?

如何从非异步任务中正确返回TypeResult

毛伊岛.NET 8图片不再适合按钮

try 创建一个C#程序,该程序使用自动实现的属性、覆盖ToString()并使用子类

如何在绑定到数据库的datagridview中向上或向下移动行

ASP.NET核心MVC|如何在控制器方法之间传递值

处理方法内部过滤与外部过滤

如何在.NET8中使用Blazor Web App(WebAssembly)托管服务器端控制器?

能否将我图表中的星号与X轴上一天中的第二位数字对齐?