You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI C#中无需Xaml Entry控件,如何在后台代码获取DataModel字段值?

解决方案

问题根源

你的详情页构造函数中设置了BindingContext = this;,这会覆盖跳转时传入的选中项对象,导致无法获取原始的MyDataModel实例及其ID值。


方案一:利用BindingContext直接获取(推荐)

1. 修正详情页构造函数

移除覆盖BindingContext的代码:

public DetailPage()
{
    InitializeComponent();
    // 删除这行:BindingContext = this;
}

2. 在提交事件中获取ID并保存

因为跳转时已经将选中的MyDataModel设为BindingContext,直接转换即可拿到ID,且Entry的绑定已经同步更新了模型的FirstName和LastName:

private async void Submit_Button_Clicked(object sender, EventArgs e)
{
    // 获取绑定的原始数据模型
    MyDataModel myRecord = BindingContext as MyDataModel;
    
    // 无需手动从Entry取文本,绑定已经自动更新了模型属性
    await SaveRecord(myRecord);
}

如果坚持要手动读取Entry文本(不推荐),也可以保留模型的ID:

private async void Submit_Button_Clicked(object sender, EventArgs e)
{
    MyDataModel myRecord = BindingContext as MyDataModel;
    myRecord.FirstName = FirstNameEntry.Text;
    myRecord.LastName = LastNameEntry.Text;
    // ID已存在于myRecord中,直接使用
    await SaveRecord(myRecord);
}

方案二:通过构造函数传递选中项(更直观)

1. 修改详情页,添加带参构造函数

public MyDataModel SelectedRecord { get; set; }

public DetailPage(MyDataModel selectedRecord)
{
    InitializeComponent();
    SelectedRecord = selectedRecord;
    // 设置BindingContext让Entry绑定生效
    BindingContext = selectedRecord;
}

2. 调整集合视图的跳转代码

private async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (e.CurrentSelection.FirstOrDefault() != null)
    {
        MyDataModel mySelectedItem = e.CurrentSelection.FirstOrDefault() as MyDataModel;
        // 通过构造函数传递选中项
        await Navigation.PushAsync(new DetailPage(mySelectedItem));
    }
}

3. 提交事件中直接使用SelectedRecord

private async void Submit_Button_Clicked(object sender, EventArgs e)
{
    SelectedRecord.FirstName = FirstNameEntry.Text;
    SelectedRecord.LastName = LastNameEntry.Text;
    // 直接获取ID:SelectedRecord.ID
    await SaveRecord(SelectedRecord);
}

内容的提问来源于stack exchange,提问作者SqueezeOJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:45:11