.NET Maui MVVM 选择器绑定 SelectedIndexChanged 事件

杰贝斯特

我正在使用 MVVM 开发带有 .NET Maui 的 Windows 桌面应用程序。

我有 2 个Pickers具有ImageSourceSelectedIndex绑定到视图模型中的属性。当从第一个项目中选择一个Picker项目时,需要更改另一个项目。我想将SelectedIndexChanged事件绑定到视图模型中的方法来完成此操作。

选择器中事件的 XAMLPicker如下所示:

<Picker SelectedIndexChanged="{Binding OnSelectedIndexChanged}" />

viewmodel 中的方法如下所示:

public void OnSelectedIndexChanged(object sender, EventArgs e)
{
    // do stuff
}

但是运行程序时出现以下错误:

XFC0009 未找到“SelectedIndexChanged”的属性、BindableProperty 或事件,或者值和属性之间的类型不匹配。MauiApp1

我的临时解决方案是在事件触发时从后面的代码中调用 viewmodel 方法。后面的代码如下所示:

private void Picker_SelectedIndexChanged(object sender, EventArgs e)
{
    (BindingContext as MainViewModel).OnSelectedIndexChanged(sender, e);
}

我想让代码尽可能地呆在后面。有没有办法SelectedIndexChanged通过直接绑定到视图模型中的方法来处理事件?

更新尝试实施partial void On<PropertyName>Changed()

我的视图模型:

public partial class MainViewModel : ObservableObject
{
    [ObservableProperty]
    private ObservableCollection<ProductGroupRoot> itemSourceProductGroups = new();

    [ObservableProperty]
    private int selectedProductGroup = -1;

    [ObservableProperty]
    private ObservableCollection<ProductRoot> itemSourceProducts = new();

    [ObservableProperty]
    private int selectedProduct = -1;
    
    // other properties

    partial void OnSelectedProductGroupChanged(int value)
    {
        // TODO: change values in ItemSourceProducts
    }        
}

自动生成的代码应该已经为部分方法创建了一个定义,但是我得到了错误:

CS0759 找不到用于实现部分方法“MainViewModel.OnSelectedProductGroupChanged(int)”的声明的定义声明

我正在使用 CommunityToolkit.Mvvm v7.1.2(最新稳定版)。

里卡多凑

当绑定到的属性更改时,您可以简单地更改第二个选择器项目SelectedIndex

由于您使用的是 MVVM CommunityToolkit,要在属性更改后执行一些代码,您必须实现在自动生成的类中定义的部分方法。这种方法称为On<YourPropertyName>Changed().

检查这个答案:https ://stackoverflow.com/a/72499605/7977288

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.net maui MVVM 从 CollectionView 绑定 SelectedItemCommand 和 SelectedItemParameter

.NET MAUI 标签绑定未在 C# 中更新 - 不是 MVVM

在 .NET MAUI/Xamarin.Forms 中使用 MVVM 的手势识别器

ASP.NET DropDownList SelectedIndexChanged事件不起作用

MVVM事件和ICommand绑定

ASP.NET DropDownList 未在 SelectedIndexChanged 上绑定 SQL

.Net Maui MVVM - 在页面/视图打开时填充 CollectionView 的最佳方法是什么?

Dropdownlist selectedindexchanged事件未触发

DropDownList的SelectedIndexChanged事件未触发

ComboBox SelectedIndexChanged事件未触发

ASP.Net DropDownList SelectedIndexChanged事件触发,但不执行任何操作

jQuery中的change事件,用于ASP.NET下拉列表中的SelectedIndexChanged

Xamarin Forms - 在选择器选择中使用 Async SelectedIndexChanged

如何获取绑定了“点击”事件的选择器?

.net Maui 数据绑定到外壳弹出项 IsVisible 属性

在RadComboBox`SelectedIndexChanged`事件内绑定RadGrid`EditItemTemplate` DropDownList,此RadComboBox在RadGrid外部

WPF MVVM:将命令绑定到事件

在WPF MVVM中绑定到鼠标事件

SelectedIndexChanged事件也会触发错误的数据

ComboBox的SelectedIndexChanged事件-填充控件值

如何根据选择器更改取消绑定和重新绑定事件

MAUI .NET 设置窗口大小

UWP 时间选择器 MVVM

具有事件绑定的Angular组件的CSS选择器

与后代选择器绑定时,为什么在子元素之前的父元素上触发事件?

使用javascript或jquery中的通配符选择器将事件绑定到动态生成的元素

将点击事件绑定到带有剔除的选择器

.net maui 无法获取 Observable 集合中的更新字段以在绑定集合视图中更新

使用数据绑定和MVVM处理onClick事件